Java Android中位图的getPixels方法说明
如何解释位图的内置方法getPixels返回的数组 这是我的密码:Java Android中位图的getPixels方法说明,java,android,colors,bitmap,Java,Android,Colors,Bitmap,如何解释位图的内置方法getPixels返回的数组 这是我的密码: public void foo() { int[] pixels; Bitmap bitmapFoo = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.test2); int height = bitmapFoo.getHeight(); int width = bitmapFoo.get
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);
}
数组“pixels”返回的值从-988602635到1242635509,这只是我制作的一个简单PNG文件中的一些颜色。如何解释此方法返回的数字
编辑:我意识到这个整数代表一种颜色。我只是不明白如何将这个整数解释为构成颜色的RBG和alpha值
谢谢
注:如果你问自己,“他想做什么?”我试图找到一种动态修改位图颜色的方法。它会为位图返回一个int Color类定义了 创建和转换颜色整数。 颜色表示为压缩整数, 由4个字节组成:alpha、红色、绿色、, 蓝色这些值是不相乘的, 这意味着存储任何透明度 仅在alpha组件中,而不是 在颜色组件中。这个 组件的存储方式如下
(alpha如果您有alpha、红色、绿色和蓝色值,则您的in颜色等于(alpha甚至更多:
int alpha=argb>>24;
int red=(argb & 0x00FF0000)>>16;
int green=(argb & 0x0000FF00)>>8;
int blue=(argb & 0x000000FF);
还可以执行以下操作从中检索颜色 整数:
除此之外,我认为应该是这样
bitmapFoo.getPixels(pixels, 0, width, 0, 0, width, height);
坐标从0开始,对吗?嘿,谢谢,但我知道它是一种颜色。我应该更好地表达我的问题,问我真正想要的是什么。这是我的错,它已经被编辑过了。+1。@user432209查看我引用的部分。(alpha这是我没有得到的部分。)。(alpha是位逻辑,其中每个像素在RGB32像素中为8位。通常将红色、绿色、蓝色和现在的alpha打包为32位数据整数。根据文档,步幅必须大于等于位图的宽度。您在这里使用了“0”表示步幅。第三个参数是步幅,在示例中等于宽度。参数列表如下所示:
int[]像素,int偏移量,int步幅,int x,int y,int宽度,int高度
你的getPixels的简单参数刚刚救了我。。。
int alpha=argb>>24;
int red=(argb & 0x00FF0000)>>16;
int green=(argb & 0x0000FF00)>>8;
int blue=(argb & 0x000000FF);
int mColor = 0xffffffff;
int alpha = Color.alpha(mColor);
int red = Color.red(mColor);
int green = Color.green(mColor);
int blue = Color.blue(mColor);
bitmapFoo.getPixels(pixels, 0, width, 0, 0, width, height);