3.7.8. JFIFКак уже отмечалось, JPEG является методом сжатия графических данных, а не графическим форматом. Поэтому в нем не определяются такие специфические параметры изображения, как геометрический размер пиксела, световое пространство или чередование битовых строк. Все это делается в формате JFIF. JFIF (Jpeg File Interchange Format, формат обмена файлами стандарта JPEG) является графическим форматом данных, который обеспечивает обмен сжатыми файлами JPEG между компьютерами. Основные особенности этого формата заключаются в использовании цветового пространства YCbCr из трех цветовых компонент цветных изображений (или одна компонента для полутоновых изображений), а также использование маркера для обозначения параметров, отсутствующих в стандарте JPEG, а именно, разрешение изображения, геометрический размер пиксела и некоторые другие параметры, специфические для конкретных приложений. Маркер JFIF (называемый еще АРР0) начинается строкой символов JFIF(NUL). Затем записаны информация о пикселах и другие спецификации.
Табл. 3.59. Маркеры JPEG. Далее могут следовать дополнительные сегменты, описывающие расширения JFIF, в которых записывается платформенно ориентированная информация об изображении. Каждое расширение начинается строкой JFXX(NUL). Далее следует 1 байт, идентифицирующий конкретное расширение. Расширение может содержать данные, используемые конкретными приложениями. Тогда они могут начинаться другими строками или специальными идентифицирующими маркерами, отличными от JFIF и JFXX. Формат первого сегмента маркера АРР0 состоит из следующих полей: 1. Маркер АРР0 (4 байта): FFD8FFE0. 2. Длина (2 байта): общая длина маркера, включая 2 байта поля «длина», но исключая сам маркер АРР0 (поле 1). 3. Идентификатор (5 байтов): . Это строка JFIF(NUL), идентифицирующая маркер АРР0. 4. Версия (2 байта). Пример: обозначает версию 1.02. 5. Единица измерения (1 байт) плотности по координатам X и Y. Число 0 означает отсутствие этой единицы, поля Xdensity и Ydensity обозначают геометрический размер пиксела. Число 1 обозначает, что величины Xdensity и Ydensity измеряются в точках на дюйм, а 2 - в точках на сантиметр. 6. Xdensity (2 байта), Ydensity (2 байта): плотность пикселов по горизонтали и по вертикали (обе должны быть ненулевые). 7. Xthumbnail (1 байт), Ythumbnail (1 байт): Размер крохотного пиксела по горизонтали и вертикали. 8. (RGB)n (3n байт) упакованные (24-битовые) величины RGB раскраски крохотного пиксела, n=Xthumbnail×Ythumbnail. Синтаксис сегмента расширения маркера АРР0 имеет следующий вид. 1. Маркер АРР0. 2. Длина (2 байта): общая длина маркера, включая 2 байта поля «длина», но исключая сам маркер АРР0 (поле 1). 3. Идентификатор (5 байтов): . Это строка JFXX(NUL), идентифицирующая расширение. 4. Код расширения (1 байт): означает, что пиксел закодирован JPEG, - размер пиксел 1 байт/пиксел (монохроматический), - размер пиксел 3 байт/пиксел (цветной). 5. Данные расширения (переменные): это поле зависит от конкретного приложения.
|