Що таке файл JFIF?
JFIF (формат обміну файлами JPEG (JFIF)) — це файл формату зображення, який використовує розширення .jfif. JFIF створюється на основі JIF (формат обміну JPEG), зменшуючи складність і усуваючи його обмеження.
Коротка історія JFIF
Розробкою документа JFIF керував Ерік Гамільтон, і угода щодо першої версії була укладена наприкінці 1991 року. Версія 1.02 була опублікована 7 вересня 1992 року. RFC 2046 визначає, що формат JFIF використовується для передачі зображень JPEG через Інтернет. JFIF був опублікований ECMA у 2009 році та стандартизований ITU-T у 2011 році як його Рекомендація T.871 та ISO/IEC у 2013 році як ISO/IEC 10918-5
Формат файлу JFIF
Файл JFIF складається з послідовності маркерів, як визначено в частині 1 стандарту JPEG. Кожен маркер складається з двох байтів (FF, за яким іде байт, який визначає тип маркера). Маркери можуть бути як окремими, так і вказувати на початок сегмента маркера.
JFIF дозволяє декільком компонентам, таким як Y, Cb, Cr, мати різну роздільну здатність, але їх вирівнювання не визначено. На відміну від JPEG, JFIF може надавати інформацію про роздільну здатність і співвідношення сторін. JFIF також визначає колірну модель, яка буде використовуватися.
Структура файлу
Сегмент | Код | Опис |
---|---|---|
SOI | FF D8 | Початок зображення |
JFIF-APP0 | FF E0 s1 s2 4A 46 49 46 00 … | |
JFXX-APP0 | FF E0 s1 s2 4A 46 58 58 00 … | |
додаткові маркерні сегменти | ||
SOS | FF DA | Початок сканування |
стислі дані зображення | ||
EOI | FF D9 | Кінець зображення |
Стандарт JFIF визначає такі сегменти:
Сегмент маркера JFIF APP0
Це обов’язковий сегмент, що містить параметри зображення. Він також може містити вбудовану нестиснуту мініатюру.
Поле | Розмір (байти) | Опис |
---|---|---|
Маркер APP0 | 2 | FF E0 |
Довжина | 2 | Довжина сегмента без урахування маркера APP0 |
Ідентифікатор | 5 | JFIF (4A 46 49 46 00) у ASCII із завершенням нульовим байтом |
Версія JFIF | 2 | Версія JFIF |
Одиниці щільності | 1 | Одиниця для наступних полів щільності пікселів 00: немає одиниць; Співвідношення ширина:висота пікселя дорівнює Ydensity:Xdensity 01 : пікселів на дюйм 02 : Пікселі на сантиметр |
Xdensity | 2 | Щільність пікселів по горизонталі більше нуля |
Ydensity | 2 | Вертикальна щільність пікселів більше нуля |
Xthumbnail | 1 | Кількість пікселів по горизонталі вбудованої мініатюри RGB. Може дорівнювати нулю |
Ythumbnail | 1 | Вертикальна кількість пікселів вбудованої мініатюри RGB. Може дорівнювати нулю |
Дані мініатюр | 3 × n | Нестиснуті 24-бітні дані мініатюр растрового RGB |
Сегмент маркера розширення JFIF APP0
Це необов’язковий розділ, який, якщо його визначено, має слідувати безпосередньо за сегментом маркера JFIF APP0. Цей розділ підтримується JFIF версії 1.02 і пізніших і дозволяє вставляти мініатюри в трьох різних форматах.
Поле | Розмір (байти) | Опис |
---|---|---|
Маркер APP0 | 2 | FF E0 |
Довжина | 2 | Довжина сегмента без урахування маркера APP0 |
Ідентифікатор | 5 | JFXX (4A 46 58 58 00) у ASCII із завершенням нульовим байтом |
Формат мініатюри | 1 | Визначає, який формат даних використовується для наступної вбудованої мініатюри: 10 : формат JPEG 11 : 1 байт на піксель, палетований формат 13 : 3 байти на піксель у форматі RGB |
Дані мініатюри | змінна |
Перетворення JFIF в інші формати файлів зображень
JFIF можна конвертувати в такі популярні формати файлів зображень, як PNG, JPG і PDF.