Gff format summary jpeg file interchange format

застосування
Використовується переважно в програмах обробки графіки і зображень.

Є специфікації для цього формату.

Є вихідні для цього формату.

Під абревіатурою JPEG (Joint Photographic Experts Group) мається на увазі організація-розробник стандарту, метод стиснення, а також формат файлу. Фактично, специфікація формату JPEG, описана в 9 главі. не визначає загального способу для зберігання та обміну JPEG-даних між різними платформами і операційними системами. Формат JPEG File Interchange Format (JFIF) - розробка корпорації C-Cube Microsystems для зберігання даних, кодованих в JPEG. JFIF-формат призначений для обміну JPEG-кодованих даних між різними несумісними системами і додатками.

І JPEG, і JFIF - дані представляють собою потік байтів, що зберігають в собі 16- бітове слово в форматі "страший в молодшому". Зазвичай JPEG-дані записуються у вигляді потоку блоків, кожен з яких ідентифікується значенням маркера.

Перші 2 байта будь-якого JPEG-потоку зберігають значення маркера "Start Of Image" (SOI) - FFh D8h. У файлі JFIF формату є маркер "JFIF APP0" (додаток), наступний за SOI і складається з значення коду маркера FFh E0h і символів JFIF в маркерах даних. На додаток до сегменту маркера JFIF можуть також бути присутнім один або більше сегментів маркерів JFIF-розширень, за якими слід реальні графічні дані.

Хоча заголовок JFIF-файлу формально не визначений, маркери SOI і JFIF APP0, взяті разом, можуть розглядатися в якості заголовка:

Поле SOI - це маркер Почала зображення. завжди містить значення коду маркера - FFh D8h.

Поле APP0 - це маркер Додатки. завжди містить значення коду маркера - FFh E0h.

Поле "Довжина сегмента APP0", крім довжини сегмента, включає в себе розміри самого поля "Довжина" і дані мініатюрного зображення, що міститься в сегменті APP0. Тому, значення цього поля одно (16 + 3) x (XThumbnail) x (YThumbnail).

Поле "Ідентифікатор" містить значення 4Ah 46h 49h 46h 00h (JFIF), що показує, що потік даних належить специфікації JFIF.

Поле "Версія" визначає версію специфікації JFIF, перший байт містить номер версії, а другий - номер підверсії. У версії 1.02, наприклад, значення байтів поля "Версія" будуть відповідно рівні 01h 02h, а у більш старих - 01h 00h або 01h 01h.

Поля "Units", "Xdensity" і "Ydensity" визначають одиниці вимірювання роздільної здатності формату.

Поле "Units" може набувати таких значень:
  • 01h - точки на дюйм
  • 02h - точки на сантиметр
  • 00h - безрозмірна величина (коефіцієнт стиснення пікселя). Поля Xdensity і Ydensity визначають дозвіл даних по горизонталі і вертикалі. Якщо Units = 00h, то Xdensity і Ydensity містять коефіцієнт стиснення пікселів по горизонталі і по вертикалі (Xdensity / Ydensity) замість дозволу. Для уникнення несумісності, не використовуються неквадратні пікселі, тобто Xdensity і Ydensity містять значення 1.

Зараз рідко хто використовує для зберігання мініатюрних зображень маркер JFIF APP0, хоча він підтримуються для сумісності. У версії 1.02 JFIF виділяє під це окремий маркер розширення, що набагато зручніше, тому що мініатюрні зображення бувають різних розмірів. У версії 1.02, поряд з 24-бітовими, підтримуються мініатюрні 256-колірні зображення, стислі JPEG-чжатіем. Такі мініатюрні зображення обмежені 64K, тому що вони повинні поміщатися в маркер APP0.

За сегментом маркера JFIF можуть слідувати один або кілька додаткових сегментів маркера розширення JFIF, що використовуються для зберігання додаткової інформації та присутніх тільки в JFIF версії 1.02 і більше. Далі наведена структура цих сегментів:

Поле APP0 містить значення FFh E0h.

Поле Length містить значення довжини сегмента розширення в байтах.

Поле Identifier містить значення 4Ah 46h 58h 58h 00h (JFXX).

Поле ExtensionCode вказує тип інформації, яка міститься в маркері розширення. У версії 1.02 визначені три коду розширення: 10h (мініатюрне зображення кодувати JPEG), 11h (мініатюрне зображення записано у вигляді 1-байтових пікселів і палітри) і 13h (мініатюрне зображення записано у вигляді 3-байтовой RGB пікселів).

JFIF декодер повинен ігнорувати нерозпізнані маркери розширення і сегменти APPn. Специфічні APPn маркери, які не розпізнані JPEG декодером, можуть бути просто опущені з використанням поля довжини маркера.

Фактично, дані JPEG в JFIF файлі розташовані після всіх маркерів APP0 і відповідають формату, визначеному в документації JPEG. Дані зображення в файлі JFIF рекомендується кодувати алгоритмом JPEG, забезпечуючи тим самим максимальну сумісність при обміні даними.

Для розпізнавання JFIF файлу або потоку даних, проскануйте дані на значення FFh D8h FFh, що ідентифікують маркер SOI, що супроводжується іншим маркером. У правильному файлі JFIF наступний байт буде мати значення E0h, яке вказує на сегмент маркера JFIF APP0. Хоча не виключено, що один або більше інших сегментів маркера можуть бути помилково записані між маркерами SOI JFIF APP0 (порушення специфікації JFIF). Але декодер, як сказано раніше, повинен спробувати прочитати файл.

Наступні 2 байта (довжина сегмента APP0) можуть набувати різних значень, зазвичай 00h 10h, за ними слідують 5 байтів: 4Ah 46h 49h 46h 00h (JFIF). Якщо виявлені ці значення, маркер SOI (FFh D8h) позначає початок потоку даних JFIF. Якщо виявлені тільки значення FFh D8h FFh і відсутні інші дані, то це вихідний потік даних JPEG. Всі потоки даних JFIF і JPEG закінчуються маркером "кінець зображення" (FFh D9h).

Тільки 2 з не запатентований форматів поряд з JFIF підтримують JPEG-кодування. Остання версія формату Macintosh PICT приєднує заголовок PICT до потоку даних JFIF. Якщо прибрати все до маркера SOI і після маркера EOI, ми отримаємо еквівалентний JFIF файл. Інший формат, що підтримує JPEG-кодування, - TIFF 6.0, докладно описаний в главі про TIFF.

Зв'язок з C-Cube Microsystems:

C-Cube Microsystems
Attn: Scott St. Clair
Corporate Communications
Один тисячі сімсот сімдесят вісім McCarthy Blvd.
Milpitas, CA 95035

Див. Також Главу 9 для інформації про стиснення JPEG. Також доступні питання і відповіді про JPEG і про стиснення, що містять другорядну інформацію про JPEG.

American National Standards Institute, Inc.
Attn: Sales
1430 Broadway
New York, NY 10018

Стандарт поділений на 2 частини: Частина 1 є власне специфікацією. Зараз частина 1 вже вийшла на рівень Міжнародного Стандарту. Див. Також наступний документ:

Цифрове стиснення і кодування безперервних зафіксованих зображень, частина 1: Вимоги та Вказівки. Номер документа ISO / IEC - 10918-1.

Частина 2 все ще в статусі чернетки. Див. Наступний документ:

Цифрове стиснення і кодування безперервних зафіксованих зображень, частина 2: Тестування. Номер документа ISO / IEC - 10918-2.

Див. Також обговорення JPEG в Главі 9 для додаткових рекомендацій, включаючи доступні для покупки книги зі специфікацією, питаннями і відповідями JPEG. Також в наявності є декілька JPEG програм і бібліотек.