Какво е JFIF файл?
JFIF (JPEG File Interchange Format (JFIF)) е файл с формат на изображение, който използва разширението .jfif. JFIF надгражда JIF (JPEG Interchange Format) чрез намаляване на сложността и разрешаване на неговите ограничения.
Кратка история на 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 : Няма единици; съотношението ширина:височина пиксел е равно на Yплътност:Xплътност 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.