Как конвертировать 24 бит RGB в 8 бит RGB

Мне было интересно, как наилучшим образом преобразовать 24-битный цвет RGB (8 бит на цвет) в 8-битный цвет (2 бита Blue, 3 Green, 3 Red). Мне нужен код C для этого.

3
задан Gootik 05 окт. '11 в 9:55
источник поделиться

3 ответов

8 бит RGB обычно является индексированным (палитрованным) цветовым форматом, см. Палитра (вычисления).

Как вы описали его, хотя получение 8 bpp из 24 bpp довольно просто - вам нужно разбить младшие значащие биты и объединить бит в однобайтовое значение на пиксель. AFAIK это не стандартное или хорошо известное представление цвета пикселей.

6
ответ дан Roman R. 05 окт. '11 в 9:59
источник поделиться

Не в C, а в javascript.

encodedData = (Math.floor((red / 32)) << 5) + (Math.floor((green / 32)) << 2) + Math.floor((blue / 64));

qaru.site/questions/1848697/...

1
ответ дан Jai 12 авг. '14 в 10:18
источник поделиться

Чтобы преобразовать значение 8 бит [0 - 255] в 3bit [0, 7], 0 не является проблемой, но помните, что 255 следует преобразовать в 7, поэтому формула должна быть Red3 = Red8 * 7/255.

Чтобы преобразовать 24-битный цвет в 8 бит (RRRGGGBB),

8bit Color = (Red * 7 / 255) << 5 + (Green * 7 / 255) << 2 + (Blue * 3 / 255)
0
ответ дан Mingjie Li 17 июня '16 в 8:56
источник поделиться

Другие вопросы по меткам