Эта глава посвящена растровому и векторному представлению графики.
Как вы знаете, изображение на экране компьютера (или при печати с помощью принтера) составляется из маленьких "точек" -- пикселов. Их так много, и они настолько малы, что человеческий глаз воспринимает картинку как непрерывную. Естественно, качество изображения будет тем выше, чем "плотнее" расположены пикселы (т.е. чем больше разрешение устройства вывода), и чем точнее закодирован цвет каждого из них.
Разрешение обычно измеряют в "точках на дюйм" (dpi)8. Для разных устройств эта величина примерно следующая:
Как кодируется цвет пикселов? В простейшем случае каждый пиксел может быть или черным, или белым. Значит, для его кодирования достаточно одного бита. Однако, в этом случае полутона приходится имитировать, чередуя черные и белые пикселы (заметим, что примерно так формируют полутоновое изображение на принтерах и при типографской печати). Чтобы получить реальные полутона, для хранения каждого пиксела нужно отводить большее количество разрядов. В этом случае черный цвет по прежнему будет представлен нулем, а белый -- максимально возможным числом. Например, при восьмибитном кодировании получится 256 разных значений яркости -- 256 полутонов.
Сложнее обстоит дело с цветными изображениями. Ведь здесь нужно закодировать не только яркость, но и оттенок пиксела. Изображение на мониторе формируется путем сложения в различных пропорциях трех основных цветов: красного, зеленого и синего9. Значит, нам просто нужно хранить информацию о яркости каждой из этих составляющих.
Для получения наивысшей точности цветопередачи достаточно иметь по 256 значений для каждого из основных цветов (вместе это дает 2563 -- более 16 миллионов оттенков)10. Во многих случаях можно обойтись несколько меньшей точностью цветопередачи. Если использовать для представления каждой составляющей по 5 бит (а тогда для хранения данных пиксела будет нужно не 3, а 2 байта), удастся закодировать 32768 оттенков11.
Естественно, на практике встречаются (и нередко) ситуации, когда нам гораздо важнее не идеальная точность, а минимальный размер файла; бывают и изображения, где изначально используется небольшое количество цветов. В таких случаях поступают вот как: собирают все нужные оттенки в таблицу и нумеруют их, после чего хранят уже не полный код цвета каждого пиксела, а номера цветов в таблице (индексы)12. Чаще всего используют 256-цветные таблицы. Поскольку в разных компьютерах могут быть приняты разные стандартные таблицы цветов, не исключено, что открыв полученный от кого-нибудь графический файл, вы увидите совершенно немыслимую картинку.
Кстати, именно поэтому при создании страниц в Web стараются использовать так называемую "безопасную палитру" Netscape, включающую 216 цветов, правильно отображаемых в разных системах. |
При печати на бумаге используется несколько иная цветовая модель: если монитор испускал свет, оттенок получался в результате сложения цветов, то краски -- поглощают свет, цвета вычитаются. Поэтому в качестве основных используют голубую, сиреневую и желтую краски. Кроме того, из-за неидеальности красителей, к ним обычно добавляют четвертую -- черную13. Для хранения информации о каждой краске и в этом случае чаще всего используется 1 байт.