2

Bitmap.setPixels() 似乎没有帮助~它只用 ARGB 值填充位图。

 img=Bitmap.createBitmap(width,height,Config.RGB_565);
 img.setPixels(Y, 0, mWidth, 0, 0, mWidth, mHeight);

无论我如何填充int[]Y,它似乎都为 Bitmap 提供了ARGB_8888值(例如。Y[i]=0xffffff00 呈现黄色 int ARGB_8888 ,但是当我将配置设置RGB_565为时,它也呈现黄色......对此有什么解释吗?)

4

1 回答 1

0

指定为第一个参数的输入数组setPixels()是一个ARGB_8888int 值数组,无论 Bitmap 的格式是什么。从setPixels() 文档

用数组中的颜色替换位图中的像素。数组中的每个元素都是一个压缩的int,表示一个非预乘的ARGB Color

如果位图格式是RGB_565,则将setPixels()执行从ARGB_8888到的转换RGB_565

如果你想提供RGB_565数据(假设 Bitmap 的格式 if RGB_565)然后使用copyPixelsFromBuffer

从缓冲区复制像素,从当前位置开始,覆盖位图的像素。缓冲区中的数据不会以任何方式更改(与 setPixels() 不同,它将未预乘的 32 位转换为位图的本机格式。

您可以将像素定义为短裤数组并使用ShortBuffer.wrap()将其包装并将其传递给copyPixelsFromBuffer. 但是,它接受任何Buffer对象。

于 2015-05-13T07:19:47.173 回答