# JPEG File Interchange Format

El JFIF (JPEG File Interchange Format = format d’intercanvi de fitxers JPEG) és un format de fitxer estàndard d’imatge. Defineix especificacions complementàries per al format de contenidor que conté les dades d'imatge codificades amb l'algorisme JPEG. Les especificacions bàsiques per a un format de contenidor JPEG es defineixen a l'annex B de l'estàndard JPEG, conegut com a format d'intercanvi JPEG (JIF). JFIF es basa en JIF per resoldre algunes de les limitacions de JIF, com ara complexitat innecessària, registre de mostres de components, resolució, relació d'aspecte i espai de color. Com que JFIF és un estàndard suplementari, el format de fitxer resultant es pot anomenar "JPEG / JFIF".
JFIF és incompatible mútuament amb el nou format de fitxer d'imatge intercanviable (EXIF).

## Propòsit

JFIF defineix una sèrie de detalls que no s'especifiquen segons la norma JPEG Part 1 (ISO / IEC 10918-1, Recomanació UIT-T T.81).)

### Registre d'exemple de components

JPEG permet que diversos components (com ara Y, Cb i Cr) tinguin resolucions diferents, però no defineix com s'han d’alinear aquestes matrius de mostra diferents. L'estàndard JFIF requereix que les mostres es situïn " intersticialment ", és a dir, el decodificador pot tractar cada matriu de components com una matriu de píxels rectangulars de mida igual mostrejats als seus centres, amb cada matriu els mateixos límits exteriors que la imatge. Això és convenient per als usuaris d’ordinadors, però no és l’alineació que s'utilitza a MPEG-2 i a la majoria d’aplicacions de vídeo.

### Resolució i relació d'aspecte

L'estàndard JPEG no inclou cap mètode per codificar la resolució ni la relació d'aspecte d'una imatge. JFIF proporciona informació de resolució o relació d’aspecte mitjançant una extensió de segment d’aplicació a JPEG. Utilitza el segment d'aplicació # 0, amb una capçalera de segment que consisteix en l'ortografia de cadena d'acabament nul "JFIF" en ASCII seguida d'un byte igual a 0, i especifica que aquest ha de ser el primer segment del fitxer, per la qual cosa és més senzill reconèixer un fitxer JFIF. Les imatges Exif enregistrades per càmeres digitals generalment no inclouen aquest segment, però normalment compleixen amb la resta de la norma JFIF.

### Espai de color

L'estàndard JPEG utilitzat per a la codificació de compressió en fitxers JFIF no defineix quina codificació de color s'ha d'utilitzar per a les imatges. JFIF defineix el model de color a utilitzar: ja sigui Y per a escala de grisos o YCbCr derivat de primàries de color RGB tal com es defineixen a CCIR 601 (ara conegut com a Rec. UIT-R BT.601), excepte amb una escala de "rang complet" diferent dels components Y, Cb i Cr. A diferència del "rang d'estudi" definit al CCIR 601, en què el negre està representat per Y = 16 i el blanc per Y = 235 i els valors fora d'aquest rang estan disponibles per al processament del senyal "espai lliure" i "espai lliure", JFIF utilitza els 256 nivells de la representació de 8 bits, de manera que Y = 0 per al negre i Y = 255 per al blanc màxim. Les primàries de color RGB definides a JFIF mitjançant CCIR 601 també difereixen una mica del que s'ha convertit en pràctica habitual en aplicacions més recents (per exemple, difereixen lleugerament de les primàries de color definides a sRGB). A més, CCIR 601 (abans del 2007) no proporcionava una definició precisa de les primàries de color RGB; en canvi, es basava en les pràctiques subjacents de la indústria televisiva.
La interpretació del color d’una imatge JFIF es pot millorar incrustant un perfil ICC, metadades de l'espai de colors o una etiqueta sRGB i mitjançant una aplicació que interpreta aquesta informació.

## Estructura del format del fitxer

Un fitxer JFIF consisteix en una seqüència de marcadors o segments de marcadors (per obtenir més informació, consulteu JPEG, sintaxi i estructura). Els marcadors es defineixen a la part 1 de l'estàndard JPEG. Cada marcador consta de dos bytes: un FF seguit d'un byte que no és igual a 00 o FF i especifica el tipus de marcador. Alguns marcadors són independents, però la majoria indiquen l’inici d’un segment de marcador que conté grups de bytes de dades segons el patró següent:
FF xx s1 s2 [bytes de dades]
Els bytes s1 i s2 es prenen junts per representar un enter de 16 bits en format big-endian que especifica la longitud dels següents "bytes de dades" més els 2 bytes utilitzats per representar la longitud. En altres paraules, s1 i s2 especifiquen el nombre dels bytes de dades següents com a $256\cdot s1+s2-2$ .
Segons la part 1 de l'estàndard JPEG, les aplicacions poden utilitzar segments de marcador APP i definir un significat específic de l'aplicació de les dades. A l'estàndard JFIF, es defineixen els següents segments de marcador APP, que es descriuen a continuació.:
* Segment de marcador APP0 JFIF (segment abreujat de JFIF) (obligatori)
* Segment de marcador d'extensió JFIF APP0 (segment JFXX per abreujar) (opcional)
L'estàndard JFIF requereix que el segment del marcador JFIF APP0 segueixi immediatament el marcador SOI. Si s'utilitza un segment de marcador APP0 d’extensió JFIF, ha de seguir immediatament el segment de marcador APP0 JFIF. Per tant, un fitxer JFIF tindrà l'estructura següent:
Estructura de fitxers JFIF :
| Segment | Codi | Descripció |
| SOI | FF D8 | Inici de la imatge |
| JFIF-APP0 | FF E0 s1 s2 4A 46 49 46 00 ... | vegeu més avall |
| JFXX-APP0 | FF E0 s1 s2 4A 46 58 58 00 ... | opcional, vegeu més avall |
| ... segments de marcador addicionals (per exemple, SOF, DHT, COM) |||
| SOS | FF DA | Inici de l'escaneig |
| | dades d'imatge comprimides | |
| EOI | FF D9 | Final de la imatge |

### Segment de marcadors JFIF APP0

En el segment obligatori del marcador JFIF APP0 s'especifiquen els paràmetres de la imatge. Opcionalment, es pot inserir una miniatura sense comprimir.
Segment de marcadorS JFIF APP0 :
| Camp | Mida (bytes) | Descripció |
| Marcador APP0 | 2 | FF E0 |
| Llargada | 2 | Longitud del segment excloent el marcador APP0 |
| Identificador | 5 | 4A 46 49 46 00 = "JFIF" en ASCII, finalitzat per un byte nul |
| Versió JFIF | 2 | Primer byte per a versió major, segon byte per a versió menor (per a 1.02) 01 02 |
| Unitats de densitat | 1 | Unitats per als següents camps de densitat de píxels 00 : Sense unitats; ample: alçada proporció de píxels = Ydensity: Xdensityy 01 : Píxels per polzada (2,54 cm) 02 : Píxels per centímetre |
| Xdensity | 2 | Densitat horitzontal de píxels. No ha de ser zero |
| Ydensity | 2 | Densitat de píxels verticals. No ha de ser zero |
| Xthumbnail | 1 | Recompte horitzontal de píxels de la següent miniatura RGB incrustada. Pot ser zero |
| Ythumbnail | 1 | Recompte de píxels vertical de la següent miniatura RGB incrustada. Pot ser zero |
| Dades en miniatura | 3 × n | Dades de miniatures RGB de 24 bits sense comprimir (8 bits per canal de color) en l'ordre R0, G0, B0, ... Rn-1, Gn-1, Bn-1; amb n = Xthumbnail × Ythumbnail |

### Segment de marcador APP0 d'extensió JFIF

Immediatament després del segment de marcador APP0 JFIF pot haver-hi un segment de marcador APP0 d’extensió JFIF. Aquest segment només pot estar present per a versions JFIF 1.02 i posteriors. Permet incrustar una imatge en miniatura en 3 formats diferents.
Segment de marcador APP0 d'extensió JFIF :
| Camp | Mida (bytes) | Descripció |
| Marcador APP0 | 2 | FF E0 |
| Llargada | 2 | Longitud del segment excloent el marcador APP0 |
| Identificador | 5 | 4A 46 58 58 00 = "JFXX" en ASCII, finalitzat per un byte nul |
| Format de miniatura | 1 | Especifica quin format de dades s'utilitza per a la miniatura incrustada següent: 10 : Format JPEG 11 : Format paletitzat d'1 byte per píxel 13 : Format RGB de 3 byte per píxel |
| Dades en miniatura | variable | Depèn del format de la miniatura, vegeu més avall |
Les dades de miniatures depenen del format de miniatura de la següent manera:
Miniatura emmagatzemada mitjançant la codificació JPEG :
| Camp | Mida (bytes) | Descripció |
| SOI | 2 | FF D8 |
| | variable | Ha de ser en format JIF utilitzant YCbCr o simplement Y, i no ha de contenir segments JFIF o JFXX |
| EOI | 2 | FF D9 |
Miniatura emmagatzemada amb un byte per píxel :
| Camp | Mida (bytes) | Descripció |
| Xthumbnail | 1 | Recompte horitzontal de píxels de la següent miniatura incrustada. No ha de ser zero |
| Ythumbnail | 1 | Recompte de píxels verticals de la miniatura incrustada següent. No ha de ser zero |
| Paleta de miniatures | 768 | 256 entrades de paleta, cadascuna amb un valor de color RGB de 24 bits |
| Dades en miniatura | n | Un byte per píxel que conté l'índex del color dins de la paleta, amb n = Xthumbnail × Ythumbnail |
Miniatura emmagatzemada amb tres byte per píxel :
| Camp | Mida (bytes) | Descripció |
| Xthumbnail | 1 | Recompte horitzontal de píxels de la següent miniatura incrustada. No ha de ser zero |
| Ythumbnail | 1 | Recompte de píxels verticals de la miniatura incrustada següent. No ha de ser zero |
| Dades en miniatura | 3 × n | Dades de miniatures RGB de 24 bits sense comprimir (8 bits per canal de color) en l'ordre R0, G0, B0, ... Rn-1, Gn-1, Bn-1; amb n = Xthumbnail × Ythumbnail |

## Compatibilitat

El nou format de fitxer d'imatge intercanviable (Exif) és comparable a JFIF, però els dos estàndards són mútuament incompatibles. Això es deu al fet que tots dos estàndards especifiquen que el seu segment d'aplicació particular (APP0 per a JFIF, APP1 per Exif) ha de seguir immediatament el marcador SOI. A la pràctica, molts programes i càmeres digitals produeixen arxius amb els dos segments d'aplicació inclosos. Això no afectarà la descodificació d'imatges per a la majoria dels descodificadors, però els analitzadors JFIF o Exif mal dissenyats poden no reconèixer el fitxer correctament.
JFIF és compatible amb les extensions JPEG "Bloc de Recursos d'Informació" d'Adobe Photoshopi les metadades del model d'intercanvi d'informació IPTC, ja que JFIF no exclou altres segments d'aplicació, i les extensions de Photoshop no estan obligades a ser les primeres de l'arxiu. No obstant això, Photoshop generalment estalvia memòries intermèdies CMYK com a "JPEGs d'Adobe" de quatre components que no estan conformes amb JFIF. Atès que aquests fitxers no es troben en un espai de color YCbCr, normalment no són descodibles pels navegadors web i altres programes d'Internet.

## Història

El desenvolupament del document JFIF va ser dirigit per Eric Hamilton, de C-Cube Microsystems, i l’acord sobre la primera versió es va establir a finals de 1991 en una reunió celebrada a C-Cube que va comptar amb aproximadament 40 representants de diverses empreses d’informàtica, telecomunicacions i imatge. Poc després es va publicar una revisió menor: JFIF 1.01. Durant gairebé 20 anys, l'última versió disponible va ser v1.02, publicada l'1 de setembre de 1992.
El 1996, RFC 2046 va especificar que el format d'imatge utilitzat per transmetre imatges JPEG a través d'Internet hauria de ser JFIF. El tipus MIME d '"imatge / jpeg" s'ha de codificar com a JFIF. A la pràctica, però, pràcticament tot el programari d'Internet pot descodificar qualsevol imatge JIF de línia de base que utilitzi components Y o YCbCr, tant si compleix JFIF com si no.
Amb el pas del temps, C-Cube es va reestructurar (i finalment es va convertir en Harmonic, LSI Logic, Magnum Semiconductor, Avago Technologies, Broadcom i GigOptix, GigPeak, etc.) i va perdre l’interès pel document i l'especificació no tenia cap editor oficial fins que va ser recollit per Ecma International i el grup conjunt d’experts fotogràfics ITU-T / ISO / IEC cap al 2009 per evitar que es perdés a la història i proporcionar una manera de citar-lo formalment en publicacions estàndard i millorar-ne la qualitat editorial. Va ser publicat per l'ECMA el 2009 com a informe tècnic número 98 per evitar la pèrdua del registre històric, i va ser formalitzat formalment per l'UIT-T el 2011 com a Recomanació T.871 i per la ISO / IEC el 2013. com ISO / IEC 10918-5, Les publicacions més recents inclouen millores editorials, però no hi ha canvis tècnics substancials.

## Vegeu també

* JPEG
* EXIF
* Lenna

## Referències

* ↑ «Recommendation ITU-T T.81: Information technology – Digital compression and coding of continuous-tone still images – Requirements and guidelines» (PDF). ITU-T (formerly CCITT), 18-02-1992. [Consulta: 15 juny 2015].
* ↑ «Recommendation ITU-T T.81: Information technology – Digital compression and coding of continuous-tone still images – Requirements and guidelines» (PDF). ITU-T (formerly CCITT), 18-02-1992. [Consulta: 15 juny 2015].
* ↑ Hamilton, Eric. «JPEG File Interchange Format, Version 1.02» (pdf, 0.02 MB), 12-09-1992. [Consulta: 15 juny 2015].
* ↑ «JPEG File Interchange Format (JFIF)». ecma-international.org. [Consulta: 15 juny 2015].
* ↑ Hamilton, Eric. «JPEG File Interchange Format, Version 1.02» (pdf, 0.02 MB), 12-09-1992. [Consulta: 15 juny 2015].
* ↑ «JPEG File Interchange Format (JFIF)». ecma-international.org. [Consulta: 15 juny 2015].
* ↑ «Recommendation ITU-T T.871: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF)» (PDF). ITU-T, 14-05-2011. [Consulta: 15 juny 2015].
* ↑ «ISO/IEC 10918-5:2013: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF).». ISO/International Electrotechnical Commission, 01-05-2013. [Consulta: 15 juny 2015].

## Bibliografia
### Llibres

* Miano, John M, "Compressed Image File Formats"; 1999, Addison-Wesley ISBN 978-0-201-60443-6
* Pennebaker, William B. and Joan L. Mitchell: JPEG still image data compression standard; 3rd edition, 1993, Springer ISBN 978-0-442-01272-4

### Estàndards

* Hamilton, Eric: JPEG File Interchange Format, Version 1.02 (PDF, 0.02 MB) 1 September 1992
* Recommendation ITU-T T.871: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF) (PDF and Microsoft Word, 0.2 MB) Approved 14 May 2011; posted 11 September 2012
* Recommendation ITU-T T.81: Information technology – Digital compression and coding of continuous-tone still images – Requirements and guidelines (PDF and Microsoft Word, 1.5 MB) Approved 18 September 1992; posted 14 April 2004

## Enllaços externs

* Nast, Condé. «Finding Lena, the Patron Saint of JPEGs». Wired, 31-01-2019. [Consulta: 27 setembre 2021].