Android 如何使用Bitmap.setPixel()生成RGB565位图?

Android 如何使用Bitmap.setPixel()生成RGB565位图?,android,bitmap,rgb,argb,Android,Bitmap,Rgb,Argb,位图.setPixels()似乎没有帮助~它只使用ARGB值填充位图 img=Bitmap.createBitmap(width,height,Config.RGB_565); img.setPixels(Y, 0, mWidth, 0, 0, mWidth, mHeight); 无论我如何填充int[]Y,它似乎都为位图提供了ARGB_8888值 (例如,Y[i]=0xffffff00显示黄色intARGB_8888,但当我将配置设置为RGB_565时,它也显示黄色…对此有何解释?指定为

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

 img=Bitmap.createBitmap(width,height,Config.RGB_565);
 img.setPixels(Y, 0, mWidth, 0, 0, mWidth, mHeight);
无论我如何填充
int[]Y
,它似乎都为位图提供了
ARGB_8888

(例如,
Y[i]=0xffffff00
显示黄色int
ARGB_8888
,但当我将配置设置为
RGB_565
时,它也显示黄色…对此有何解释?

指定为
setPixels()的第一个参数的输入数组
是一个包含
ARGB_8888
int值的数组,无论位图的格式如何。从:

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

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

如果要提供
RGB_565
数据(假设位图的格式为
RGB_565
),请使用:

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


您可以将像素定义为一个短数组,并使用包装将其传递给
copyPixelsFromBuffer
。但它接受任何
缓冲区
对象。

谢谢您的建议!如果位图格式为RGB_565,则设置像素()将执行从ARGB_8888到RGB_565的转换。这似乎不起作用。我使用canvas.drawBitmap查看结果,颜色很奇怪。