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
呈现黄色ARGB_8888
,但是当我将配置设置为RGB_565
时,它也呈现黄色......是否有任何解释?)
答案 0 :(得分:0)
指定为setPixels()
的第一个参数的输入数组是ARGB_8888
int值的数组,无论Bitmap的格式如何。来自setPixels() documentation:
使用数组中的颜色替换位图中的像素。数组中的每个元素都是一个打包的 int ,预先表示非预乘的 ARGB颜色。
如果位图格式为RGB_565
,则setPixels()
将执行从ARGB_8888
到RGB_565
的转换。
如果您想提供RGB_565
数据(假设RGB_565
的位图格式),请使用copyPixelsFromBuffer:
从当前位置开始复制缓冲区中的像素,覆盖位图的像素。缓冲区中的数据不会以任何方式更改(与setPixels()不同,后者从未预设的32位转换为位图的本机格式。
您可以将像素定义为短裤数组,并使用ShortBuffer.wrap()将其换行并将其传递给copyPixelsFromBuffer
。它接受任何Buffer
对象。