JFIF to skrót od JPEG File Interchange Format, a JPEG oznacza Joint Photographic Experts Group. JFIF jest formatem pliku, który przechowuje dane obrazu JPEG, aby różne programy i komputery mogły go otwierać.
Wersja JFIF to pole metadanych wewnątrz pliku JPEG. Informuje, z którą wersją specyfikacji JFIF plik jest zgodny, na przykład 1.01 lub 1.02. To pole znajdziesz w plikach JPG, ponieważ JFIF jest formatem tylko dla obrazów JPEG.
Co JFIF dodaje do obrazu JPEG
Standard JPEG definiuje sposób kompresji danych obrazu. Plik JFIF jest zwykłym plikiem JPEG z jednym dodatkowym blokiem danych, zwanym segmentem APP0. Ten blok znajduje się bezpośrednio po znaczniku rozpoczynającym obraz.
Dane w segmencie APP0 zaczynają się od tekstu JFIF. Segment przechowuje informacje, których skompresowane dane obrazu nie zawierają:
- Wersja JFIF
- Pozioma i pionowa gęstość pikseli z jednostką rozdzielczości w calach, centymetrach lub bez jednostki
- Proporcje pikseli, które program wylicza z 2 wartości gęstości
- Opcjonalny mały podgląd obrazu, zwany miniaturą
JFIF określa też model kolorów. Obraz JFIF ma 1 kanał tylko z jasnością lub 3 kanały w przestrzeni barw YCbCr.
Które pliki to zawierają
Typ MIME image/jpeg został zdefiniowany dla obrazów JPEG w formacie JFIF. Rozszerzenia plików .jpg, .jpeg, .jpe, .jif i .jfif należą do tego formatu. Dlatego plik, którego nazwa kończy się na .jfif, zawiera ten sam rodzaj obrazu co plik .jpg.
Aparaty cyfrowe zwykle zapisują zdjęcia JPEG w formacie Exif. Exif przechowuje swoje metadane głównie w segmencie APP1 i ten segment również musi znaleźć się bezpośrednio po początku obrazu. Ponieważ oba segmenty muszą być pierwsze, plik nie może jednocześnie być zgodny z JFIF i Exif.
Niektóre programy nadal zapisują segment JFIF przed segmentem Exif. W takim pliku zobaczysz zarówno wersję JFIF, jak i wersję Exif.
Jak wyglądają wartości
Wersja JFIF jest zapisana w 2 bajtach. Pierwszy bajt zawiera główny numer wersji, a drugi numer podrzędny. Wersja 1.02 jest zapisana jako bajty 01 i 02.
ExifTool pokazuje to pole jako JFIFVersion. Wyświetla główny numer, kropkę i 2-cyfrowy numer podrzędny. Rejestry formatów wymieniają 3 wersje JFIF:
1.00: wczesna wersja specyfikacji1.01: wersja poprzedzająca 1.021.02: wersja z 1 września 1992
Skąd pochodzi wartość
Program zapisujący plik JPEG tworzy segment APP0 i wpisuje w nim numer wersji. ITU opublikowała JFIF jako rekomendację T.871 w 2011 roku, a ISO i IEC publikują ten sam tekst jako ISO/IEC 10918-5. Ten standard opiera się na wersji 1.02 i pliki zgodne z nim muszą zapisywać wartość 1.02.
Programy oparte na bibliotece libjpeg domyślnie zapisują 1.01. Dokumentacja wskazuje, aby ustawić 1.02, gdy program dodaje segment rozszerzenia z wersji 1.02. Dlatego plik zapisany dziś może mieć wersję 1.01 lub 1.02.
Dlaczego ma to znaczenie dla Twojego pliku
Wersja informuje program, czy może odczytać dane JFIF. Specyfikacja mówi, że plik można zwykle zdekodować, gdy główny numer wersji zgadza się z głównym numerem wersji obsługiwanej przez program.
Wersja pokazuje też, jakie miniatury plik może zawierać. Segment rozszerzenia o nazwie JFXX jest dozwolony tylko w wersji 1.02 i nowszych. Segment JFXX może przechowywać miniaturę skompresowaną JPEG lub nieskompresowaną miniaturę.
Plik JPEG bez wersji JFIF nie ma segmentu JFIF. Jest to normalne w przypadku zdjęć zapisanych przez aparat w formacie Exif.