Опрос

Какой архиватор наиболее эффективный?:

Новички

Виктор Васильев
Юрий Антонов
Сергей Андреевич
Генадий
Avanasy

JFIF

Как уже отмечалось, JPEG является методом сжатия графических данных, а не графическим форматом. Поэтому в нем не определяются такие специфические параметры изображения, как геометрический размер пиксела, световое пространство или чередование битовых строк. Все это делается в формате JFIF.

JFIF (Jpeg File Interchange Format, формат обмена файлами стандарта JPEG) является графическим форматом данных, который обеспечивает обмен сжатыми файлами JPEG между компьютерами. Основные особенности этого формата заключаются в использовании цветового пространства YCbCr из трех цветовых компонент цветных изображений (или одна компонента для полутоновых изображений), а также использование маркера для обозначения параметров, отсутствующих в стандарте JPEG, а именно, разрешение изображения, геометрический размер пиксела и некоторые другие параметры, специфические для конкретных приложений.

Маркер JFIF (называемый еще АРРО) начинается строкой символов JFIF(NUL). Затем записаны информация о пикселах и другие спецификации. Далее могут следовать дополнительные сегменты, описывающие расширения JFIF, в которых записывается платфор-менно ориентированная информация об изображении.

Значение

Имя

Описание

Недифференциальное, кодирование Хаффмана

FFC0

SOFo

Вазелина DCT 1

FFC1

SOFi

Расширенное последовательное DCT

FFC2

SOF2

Прогрессирующее DCT

FFC3

SOF3

Без потери (последовательное) |

д

ифферен

циальное, кодирование Хаффмана

FFC5

SOF5

Дифференциальное последовательное DCT I

FFC6

SOF6

Дифференциальное прогрессирующее DCT

FFC7

SOF7

Дифференциальное без потери (последов.) |

Недифференциальное арифметическое кодирование

FFC8

JPG

Зарезервировано для расширения 1

FFC9

SOFg

Расширенное последовательное DCT

FFCA

SOF10

Прогрессирующее DCT

FFCB

SOFn

Без потери (последов.) |

1 Диф

ференцш

ильное, арифметическое кодирование

FFCD

SOFis

Дифференциальное последовательное DCT I

FFCE

SOF14

Дифференциальное прогрессирующее DCT

FFCF

SOF15

Дифференциальное без потери (последов.) |

Таблицы для метода Хаффмана

FFC4

DHT

Задание таблиц для метода Хаффмана |

Спег

дефикаци

и для арифметического кодирования

FFCC

DAC

Задание условий арифм. кодирования |

Начало нового интервала

FFD0-FFD7

RSTm

Рестарт по модулю 8 счетчика га |

Другие маркеры

FFD8

SOI

Начало образа 1

FFD9

EOI

Конец образа

FFDA

SOS

Начало скана

FFDB

DQT

Задание таблиц квантования

FFDC

DNL

Задание числа строк

FFDD

DRI

Задание интервала рестарта

FFDE

DHP

Задание иерархической прогрессии

FFDF

EXP

Расширенная компонента ссылки

FFE0-FFEF

APPn

Зарезервировано для сегментов приложений

FFF0-FFFD

JPGn

Зарезервировано для расширения JPEG

FFFE

COM

Комментарий |

Зарезервированные маркеры

FF01

ТЕМ

Для временного использования 1

| FF02-FFBF

RES

Зарезервированы |

Табл. 3.59. Маркеры JPEG.

Каждое расширение начинается строкой JFXX(NUL). Далее следует 1 байт, идентифицирующий конкретное расширение. Расширение может содержать данные, используемые конкретными приложениями. Тогда они могут начинаться другими строками или специальными идентифицирующими маркерами, отличными от JFIF и JFXX.

Формат первого сегмента маркера АРРО состоит из следующих полей:

1. Маркер АРРО (4 байта): FFD8FFE0.

2. Длина (2 байта): общая длина маркера, включая 2 байта поля «длина», но исключая сам маркер АРРО (поле 1).

3. Идентификатор (5 байтов): 4A46494600i6. Это строка JFIF(NUL), идентифицирующая маркер АРРО.

4. Версия (2 байта). Пример: 0102i6 обозначает версию 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 раскраски крохотного пиксела, п =XthumbnailxYthumbnail.

Синтаксис сегмента расширения маркера АРРО имеет следующий вид.

1. Маркер АРРО.

2. Длина (2 байта): общая длина маркера, включая 2 байта поля «длина» , но исключая сам маркер АРРО (поле 1).

3. Идентификатор (5 байтов): 4A46585800i6. Это строка JFXX(NUL), идентифицирующая расширение.

4. Код расширения (1 байт): 10i6 означает, что пиксел закодирован JPEG, 1116 - размер пиксел 1 байт/пиксел (монохроматический), 13ie _ размер пиксел 3 байт/пиксел (цветной).

5. Данные расширения (переменные): это поле зависит от конкретного приложения.