RGB, aRGB и преобразования
Среди форматов представления RGB есть три, наиболее распространенные:
RGB888 (8 бит на канал);
RGB666 (6 бит на канал);
RGB565 (5 бит на канал для R и B; 6 бит для G).
RGB888 содержит 24 бита, представляющих около 16 миллионов цветов. RGB666 обычно используется в портативной электронике, но работать с 18 битами данных не удобно на обычном 16-битном DSP. Таким образом, RGB565 наиболее популярен в индустрии.
Преобразование R8 в R5 откидыванием последних битов:
R8 >> 3, (255 >> 3 = 31)
Из R5 в R8 вы можете перейти используя масштабирование или дублирование битов:
R5*255/31, R5 << 3 | R5 >>2
В формате aRGB имеется дополнительный альфа-канал (0xAARRGGBB). Альфа указывает на прозрачность пикселя (0x00 для полной прозрачности, 0xff для полной непрозрачности).
выход = a x (пиксель тона) + (1-a) x (пиксель фона)
Преобразование RGB888 в aRGB:
r = (rgb >> 16) & 0xFF (или сначала маска, потом сдвиг: 0xff0000, >>16)
g = (rgb >> 8) & 0xFF
b = (rgb >> 0) & 0xFF
aRGB = 0xff000000 | (r << 16) | (g << 8) | (b)
aRGB в RGB888:
r = (aRGB >> 16) &0xFF
g = (aRGB >> 8) &0xFF
b = (aRGB >> 0) &0xFF
a = (aRGB >> 24) &0xFF
RGB888 = (r << 16) | (g << 8) | (b)
RGB888 в RGB565:
r >> 3
g >> 2
b >> 3
(r << 11) | (g << 6) | (b)


0 коммент.:
Отправить комментарий