Есть 16-бит, 24-бит и 32-бит глубина цветов, а RGB всегда 3 байта и каждый байт принимает значение от 0-255, почему так?
Где кодируется глубина цвета?
При использовании 16 бит или 8 бит кодируются не уровни RGB, а индексы в палитре цветов. А уже в этой палитре задаются значения RGB для 256 (8 бит) или 65536 (16 бит) используемых цветов.
24 бита - это и есть три байта: прямое кодирование RGB.
32 бита используется в двух вариантах:
Дополнительный байт используется для канала прозрачности. Так устроен, например, PNG с прозрачностью.
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.
У rgb часто есть прозрачность, так что это и будет ваши 32 бита.