从ARGB_8888位图获取rgba uint8 []

时间:2015-08-09 07:51:36

标签: android html5 canvas bitmap

我有一个位图,我试图将数据作为rgba字节数组。我可以if (randomNum == 1,24,25,48,49,72,73,96,97,120,121,144,145,168,169) blnRand=true; else blnRand=false; ,但这不是rgba字节。我的最终目的是将其提供给HTML5画布,每个像素需要4个元素(r,g,b,a)。这可能吗?

这是我用来获取bmp的代码:

bmp.getPixels

我试过了:

Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
// can do bmp.getPixels here but it doesnt give RGBA :(

但是缓冲区的内容非常奇怪,它对我来说看起来不像rgba,它看起来像这样:

bmp.copyPixelsToBuffer(ByteBuffer.wrap(buffer));

那些[ 54, 59, 64, -1, 54, 59, 64, -1, 特别奇怪。

3 个答案:

答案 0 :(得分:1)

这里已经提出了问题,我相信这是对你的暗示。

how to get RGB values of bitmap in android

答案 1 :(得分:1)

像素数组的每个元素都是一个int,包含argb值。你可以得到这样的价值:

int alpha = Color.alphpa(pixel);
int red = Color.red(pixel);
int green = Color.green(pixel);
int blue = Color.blue(pixel);

答案 2 :(得分:0)

因此像素的RGBA按位操作起作用。

copyPixelsToBuffer也有效,唯一的问题是我必须将alpha从-1更改为255并且它也匹配RGBA按位操作方法。

谢谢大家的帮助!