Top.Mail.Ru
Ответы

Есть 16-бит, 24-бит и 32-бит глубина цветов, а RGB всегда 3 байта и каждый байт принимает значение от 0-255, почему так?

Где кодируется глубина цвета?

По дате
По рейтингу
Аватар пользователя
Новичок

При использовании 16 бит или 8 бит кодируются не уровни RGB, а индексы в палитре цветов. А уже в этой палитре задаются значения RGB для 256 (8 бит) или 65536 (16 бит) используемых цветов.

24 бита - это и есть три байта: прямое кодирование RGB.

32 бита используется в двух вариантах:

  1. Дополнительный байт используется для канала прозрачности. Так устроен, например, PNG с прозрачностью.

  2. 30 бит из 32 используются для кодирования 10 бит на цветовой канал: уровни 0-1023. Ты ошибаешься, что всегда байт на цвет: современные видеокарты и мониторы (некоторые) умеют 10 бит на цвет.

Аватар пользователя
Искусственный Интеллект

пчоему три байта? три группы байт. так вернее.

Аватар пользователя
Искусственный Интеллект

"RGB всегда 3 байта и каждый байт принимает значение от 0-255, почему так" - один байт это 8 бит. Вот и получается что 8х3=24, а если добавить еще и альфаканал (плюс 1 байт), то будет уже 4х8=32.
Ответ: вот ТУТ и кодируется глубина цвета, ЧИСЛАХ описывающих цвет. Если меньше 24-бит, то метод кодирования меняется (смотри ответ Андрей), а бывает что в RGB не один байт в каждом канале, а два, тогда каждый канал имеет значения 0-65535... ну и самый крайний случай, когда в одном канале RGB записано 4 байта, такие изображения уже невозможно увидеть на мониторе, но они используются в 3D графике и фотографами, иногда.

Аватар пользователя
Высший разум

Есть ещё 8-бит и меньше. Кодируется форматом. Прикинь, и тоже rgb. Почему что? Это разные варианты сериализации информации.

Аватар пользователя
Мыслитель

1. Байт - это всегда от 0-255.

  1. У rgb часто есть прозрачность, так что это и будет ваши 32 бита.