Я делаю приложение для Android для распаковки, декодирования и отображения HDR-изображений.
Эти HDR-изображения используют 2 байта на компонент (A, R, G, B), поэтому один пиксель представлен 8-байтовым значением, которое может соответствовать только с длинным типом.
Я использую растровое изображение Android для отображения изображения, поскольку у них есть конструктор, позволяющий выполнять HDR с помощью Bitmap.Config.RGBA_F16
:
int width = 1;
int height = 1;
Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_F16);
К сожалению, я не могу найти способ заполнить пиксель растрового изображения. Я использую рекомендуемую формулу, но ее нельзя использовать в методе setPixel(x,y,color) Bitmap, потому что цвет должен быть 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 не принимает их для установки только одного пикселя.
Спасибо за любую помощь!