Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中位图的getPixels方法说明_Java_Android_Colors_Bitmap - Fatal编程技术网

Java Android中位图的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

如何解释位图的内置方法getPixels返回的数组

这是我的密码:

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);