Представление растровых изображений
Любой формат растровой картинки тем или иным способом хранит информацию о цвете каждой точки изображения, а также некоторые другие ее свойства — линейные размеры, глубину цвета, цветовую схему, палитру и т.п.
С размерами вроде как все ясно. Столько-то точек по горизонтали, столько-то по вертикали. А вот с глубиной цвета не все так просто. Формально — это число бит, приходящееся на каждую точку изображения в неупакованном виде. Но для того, чтобы вышеупомянутые биты превратились в точку, необходимо знать, в какой цветовой схеме они заданы.
Цветовая схема — это как раз и есть тот способ, по которому информация о пикселе превращается в сам пиксель. Иначе говоря, для того, чтобы отобразить некий цвет, программе недостаточно знать, что он закодирован последовательностью 5F72A0 — ей нужна информация, каким именно образом он в ней «зашит».
Существующие цветовые схемы можно условно разбить на две группы:
C прямой передачей цвета. Для каждой точки хранится прямое описание ее цвета. К таким схемам можно отнести Black&White, Grayscale, RGB, CMYK и еще серию подобных. У черно-белой картинки один бит соответствует одной точке: 0 — черный, 1 — белый. Grayscale (оттенки серого) выделяет на точку байт, принимая 0 за черный цвет, 255 — за белый, с плавным переходом яркости между ними.
Отдельного внимания заслуживают схемы RGB и CMY. Обе они созданы для передачи цветных изображений во всей видимой области спектра, но делают это по-разному. Схема RGB (Red, Green, Blue) работает подобно тому, как строится картинка на экране телевизора или ЭЛТ-монитора: варьированием яркости свечения близко расположенных ячеек люминофора. Одни ячейки при попадании в них электрона вспыхивают синим, другие — зеленым, третьи — красным, но с расстояния мы видим суммарный цвет — желтый, фиолетовый, белый — в зависимости от пропорции. Здесь важен тот факт, что экран выключенного телевизора — черный: именно на черном фоне работает такой способ смешения цветов. Обычно в схеме RGB на каждый цветовой канал выделяется один байт: получается по 256 градаций каждого исходного цвета.
Схема CMY использует другой набор базовых цветов: бирюзовый (Cyan), малиновый (Magenta) и желтый (Yellow). Они смешиваются по другому принципу: изначальный цвет — белый, а итоговый определяется концентрацией каждой краски: чем ее больше, тем темнее. Другими словами, схема RGB описывает смешение лучей света на черном экране монитора, а CMY — смешение красок на белом листе бумаги. Универсальность у схемы CMY появляется, когда в ее состав вносят четвертый канал — так называемый ключевой. Называется она CMYK, где буквой K и обозначен этот самый четвертый канал, обычно — черный. Существует расхожее заблуждение, что буква K взята из слова Black, чтобы не было путаницы между Black и Blue. На самом же деле ноги у буквы растут из словосочетания «Key Color», и черным он быть вовсе не обязан.
С палитрой. В случае передачи цвета с помощью палитры информация о точке представляет собой не сам цвет, а его порядковый номер. Все цвета один раз описаны в начале графического файла, обычно — по схеме RGB, а дальше следуют только ссылки на них: «Сюда поставим цвет номер пять, а сюда — номер восемнадцать». Единственная цель палитры — экономия объема, занимаемого картинкой. Если у нас, допустим, на изображении всего четыре цвета, то для хранения информации о точке достаточно двух бит, плюс еще двенадцать байт для описания самих цветов, если мы говорим об RGB.
На заметку: если требуется особая палитра, то она записывается в сам файл с картинкой. Иногда используется и стандартная палитра — одна из предопределенных. Тогда даже эта информация не лежит в каждом файле, а существует только на стороне клиента.
Источник: http://www.lki.ru