use*_*209 11 java android colors bitmap
如何从内置方法getPixels为Bitmap解释返回的数组?
这是我的代码:
public void foo() {
int[] pixels;
Bitmap bitmapFoo = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.test2);
int height = bitmapFoo.getHeight();
int width = bitmapFoo.getWidth();
pixels = new int[height * width];
bitmapFoo.getPixels(pixels, 0, width, 1, 1, width - 1, height - 1);
}
Run Code Online (Sandbox Code Playgroud)
返回的数组"像素"的值从-988,602,635到1,242,635,509,这只是我在一个简单的PNG文件上的几种颜色.如何解释从此方法返回的数字?
编辑:我意识到这个整数代表一种颜色.我只是不明白如何将这个单个整数解释为构成颜色的RBG和alpha值.
谢谢.
PS.如果你问自己,"他想做什么?" 我试图找出一种动态修改位图颜色的方法.
Jon*_*per 14
您还可以执行以下操作以从int中检索颜色:
int mColor = 0xffffffff;
int alpha = Color.alpha(mColor);
int red = Color.red(mColor);
int green = Color.green(mColor);
int blue = Color.blue(mColor);
Run Code Online (Sandbox Code Playgroud)
Bry*_*nny 11
Color类定义了创建和转换颜色int的方法.颜色表示为打包的int,由4个字节组成:alpha,red,green,blue.这些值未经过多次修改,这意味着任何透明度都只存储在alpha组件中,而不是存储在颜色组件中.组件存储如下 (alpha << 24)| (红色<< 16)| (绿色 << 8)| 蓝色.每个组件的范围在0..255之间,0表示对该组件没有贡献,255表示100%贡献.因此,不透明黑色将是0xFF000000(100%不透明,但红色,格力,蓝色和不透明白色的贡献不会是0xFFFFFFFF
例如,当您使用Paint对象时:
Paint pRed = new Paint();
pRed.setColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)
setColor期待一个int.Color.RED是其预定义"红色"含义的int值.
更:
int alpha=argb>>24;
int red=(argb & 0x00FF0000)>>16;
int green=(argb & 0x0000FF00)>>8;
int blue=(argb & 0x000000FF);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21730 次 |
| 最近记录: |