Как преобразовать 24-битный RGB в 8-битный RGB - PullRequest
4 голосов
/ 05 октября 2011

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

Ответы [ 3 ]

7 голосов
/ 05 октября 2011

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

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

1 голос
/ 12 августа 2014

Не в Си, а в JavaScript.

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

https://stackoverflow.com/a/25258278/2130509

0 голосов
/ 17 июня 2016

Чтобы преобразовать 8-битное значение [0 - 255] в 3-битное [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)
...