我正在制作一款安卓应用程序,用于解压、解码和显示HDR图片。这些HDR图片每个组件(A、R、G、B)使用2个字节,因此一个像素由一个8字节的值表示,只能使用long类型来存储。
我正在使用安卓的Bitmap来显示图片,因为它们提供了一种构造函数,可以使用RGBA_F16来实现HDR功能。
我正在使用安卓的Bitmap来显示图片,因为它们提供了一种构造函数,可以使用RGBA_F16来实现HDR功能。
int width = 1;
int height = 1;
Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_F16);
很不幸,我找不到任何方法来填充位图的像素。我使用了建议的公式,但不能在Bitmap的setPixel(x,y,color)方法中使用,因为颜色必须是int类型:
long color = (A & 0xffff) << 48 | (B & 0xffff) << 32 | (G & 0xffff) << 16 | (R & 0xffff);
image.setPixel(0,0,color); //Argument type error
我也尝试了Color(它有一个HDR兼容的方法)、Paint和Canvas,但没有Bitmap方法可以接受它们来设置只有一个像素。
感谢任何帮助!