JFIF

formato de fichero estándar de imagen

El JFIF (en inglés: JPEG File Interchange Format, en español: formato de intercambio de ficheros JPEG) es un formato de fichero estándar de imagen. Define especificaciones complementarias para el formato de contenedor que contiene los datos de imagen codificados con el algoritmo JPEG. Las especificaciones básicas para un formato de contenedor JPEG se definen en el anexo B del estándar JPEG, conocido como formato de intercambio JPEG (JIF). JFIF se basa en JIF resolviendo algunas sus limitaciones, como complejidad innecesaria, registro de muestras de componentes, resolución, relación de aspecto y espacio de color. Como JFIF es un estándar suplementario, el formato de fichero resultante se puede llamar "JPEG / JFIF".

JFIF


Una fotografía de una flor.
Desarrollador
Joint Photographic Experts Group
Información general
Extensión de archivo .jpg, .jpeg, .jpe
.jif, .jfif, .jfi (containers)
Tipo de MIME image/jpeg
Número mágico ff d8
Lanzamiento inicial 1991
Formato abierto ?

JFIF es incompatible mutuamente con el nuevo formato de fichero de imagen intercambiable ( EXIF ).

Propósito editar

JFIF define una serie de detalles que no se especifican según la norma JPEG Parte 1 ( ISO / IEC 10918-1, Recomendación UIT-T T.81). )[1]

Registro de ejemplo de componentes editar

JPEG permite que varios componentes (como Y, Cb y Cr ) tengan resoluciones diferentes, pero no define cómo se deben alinear estas matrices de muestra diferentes. El estándar JFIF requiere que las muestras se sitúen " intersticial ", es decir, el decodificador puede tratar cada matriz de componentes como una matriz de píxeles rectangulares de tamaño igual muestreados en sus centros, con cada matriz los mismos límites exteriores que la imagen. Esto es conveniente para los usuarios de ordenadores, pero no es la alineación que se utiliza en MPEG-2 y en la mayoría de aplicaciones de vídeo.

Resolución y relación de aspecto editar

El estándar JPEG no incluye ningún método para codificar la resolución ni la relación de aspecto de una imagen. JFIF proporciona información de resolución o relación de aspecto mediante una extensión de segmento de aplicación a JPEG. Utiliza el segmento de aplicación # 0, con una cabecera de segmento que consiste en el ortografía de cadena de finalización nulo "JFIF" en ASCII seguida de un byte igual a 0, y especifica que este debe ser el primer segmento del fichero, por lo que es más sencillo reconocer un fichero JFIF. Las imágenes Exif registradas por cámaras digitales generalmente no incluyen este segmento, pero normalmente cumplen con el resto de la norma JFIF.

Espacio de color editar

El estándar JPEG utilizado para la codificación de compresión en ficheros JFIF no define qué codificación de color se debe utilizar para las imágenes. JFIF define el modelo de color a utilizar: ya sea Y para escala de grises o YCbCr derivado primarias de color RGB tal como se definen en CCIR 601 (ahora conocido como Rec. UIT-R BT.601), excepto con una escala de "rango completo" diferente de los componentes Y, Cb y Cr. A diferencia del "rango de estudio" definido al CCIR 601, en el que el negro está representado por Y = 16 y el blanco para Y = 235 y los valores fuera de este rango están disponibles para el procesamiento de la señal "espacio libre" y "espacio libre", JFIF utiliza los 256 niveles de la representación de 8 bits, por lo que y = 0 para el negro y y = 255 para el blanco máximo. Las primarias de color RGB definidas a JFIF mediante CCIR 601 también difieren algo de lo que se ha convertido en práctica habitual en aplicaciones más recientes (por ejemplo, difieren ligeramente de las primarias de color definidas en sRGB ). Además, CCIR 601 (antes del 2007) no proporcionaba una definición precisa de las primarias de color RGB; en cambio, se basaba en las prácticas subyacentes de la industria televisiva.

La interpretación del color de una imagen JFIF se puede mejorar incrustando un perfil ICC, metadatos del espacio de colores o una etiqueta sRGB y mediante una aplicación que interpreta esta información.

Estructura del formato de fichero editar

Un fichero JFIF consiste en una secuencia de marcadores o segmentos de marcadores (para obtener más información, consulte JPEG, sintaxis y estructura ). Los marcadores se definen en la parte 1 del estándar JPEG.[2]​ Cada marcador consta de dos bytes: un FF seguido de un byte que no es igual a 00 o FF y especifica el tipo de marcador. Algunos marcadores son independientes, pero la mayoría indican el inicio de un segmento de marcador que contiene grupos de bytes de datos según el siguiente patrón:

FF xx s1 s2 [bytes de datos]

Los bytes s1 y s2 se toman juntos para representar un entero de 16 bits en formato big-endian que especifica la longitud de los siguientes "bytes de datos" más los 2 bytes utilizados para representar la longitud. En otras palabras, s1 y s2 especifican el número de los bytes de datos como  .

Según la parte 1 del estándar JPEG, las aplicaciones pueden utilizar segmentos de marcador APP y definir un significado específico de la aplicación de los datos. En el estándar JFIF, se definen los siguientes segmentos de marcador APP, que se describen a continuación.:

  • Segmento de marcador APP0 JFIF (segmento abreviado de JFIF) (obligatorio)
  • Segmento de marcador de extensión JFIF APP0 (segmento JFXX para abreviar) (opcional)

El estándar JFIF requiere que el segmento del marcador JFIF APP0 siga inmediatamente el marcador SOI. Si se utiliza un segmento de marcador APP0 de extensión JFIF, debe seguir inmediatamente el segmento de marcador APP0 JFIF.[3]​ Por lo tanto, un fichero JFIF tendrá la siguiente estructura:

Estructura de ficheros JFIF
segmento código Descripción
SOI FF D8 Inicio de la imagen
JFIF-APP0 FF E0 s1 s2 4A 46 49 46 00... véase más abajo
JFXX-APP0 FF E0 s1 s2 4A 46 58 58 00... opcional, véase más abajo
... segmentos de marcador adicionales

(por ejemplo, SOF, DHT, COM)

SOS FF DA Inicio del escaneado
datos de imagen comprimidos
EOI FF D9 Final de la imagen

Segmento de marcador JFIF APP0 editar

En el segmento obligatorio del marcador JFIF APP0 se especifican los parámetros de la imagen. Opcionalmente, se puede insertar una miniatura sin comprimir.

Segmento de marcador JFIF APP0
campo Tamaño (bytes) Descripción
marcador APP0 2 FF E0
largo 2 Longitud del segmento excluyendo el marcador APP0
identificador 5 4A 46 49 46 00 = "JFIF" en ASCII, finalizado por un byte nulo
versión JFIF 2 Primer byte para versión mayor, segundo byte para versión menor (para 1:02) 01 02
Unidades de densidad 1 Unidades para los siguientes campos de densidad de píxeles
  • 00 : Sin unidades; ancho: altura proporción de píxeles = Ydensity: Xdensityy
  • 01 : Píxeles por pulgada (2,54 cm)
  • 02 : Píxeles por centímetro
Xdensity 2 Densidad horizontal de píxeles. No debe ser cero
Ydensity 2 Densidad de píxeles verticales. No debe ser cero
Xthumbnail 1 Recuento horizontal de píxeles de la siguiente miniatura RGB incrustada. Puede ser cero
Ythumbnail 1 Recuento de píxeles vertical de la siguiente miniatura RGB incrustada. Puede ser cero
Datos en miniatura 3 × n Datos de miniaturas RGB de 24 bits sin comprimir (8 bits por canal de color) en el orden R0, G0, B0,... Rn-1, Gn-1, Bn-1; con n = Xthumbnail × Ythumbnail

Segmento de marcador APP0 de extensión JFIF editar

Inmediatamente después del segmento de marcador APP0 JFIF puede haber un segmento de marcador APP0 de extensión JFIF. Este segmento sólo puede estar presente para versiones JFIF 01:02 y posteriores. Permite incrustar una imagen en miniatura en 3 formatos diferentes.

Segmento de marcador APP0 de extensión JFIF
campo Tamaño (bytes) Descripción
marcador APP0 2 FF E0
largo 2 Longitud del segmento excluyendo el marcador APP0
identificador 5 4A 46 58 58 00 = "JFXX" en ASCII, finalizado por un byte nulo
Formato de miniatura 1 Especifica qué formato de datos se utiliza para la miniatura incrustada siguiente:
  • 10 : Formato JPEG
  • 11 : Formato paletizado de 1 byte por píxel
  • 13 : Formato RGB de 3 byte por píxel
Datos en miniatura variable Depende del formato de la miniatura, véase más abajo

Los datos de miniaturas dependen del formato de miniatura de la siguiente manera:

Miniatura almacenada mediante la codificación JPEG
campo Tamaño (bytes) Descripción
SOI 2 FF D8
variable Debe ser en formato JIF utilizando YCbCr o simplemente Y, y no debe contener segmentos JFIF o JFXX
EOI 2 FF D9
Miniatura almacenada con un byte por píxel
campo Tamaño (bytes) Descripción
Xthumbnail 1 Recuento horizontal de píxeles de la siguiente miniatura incrustada. No debe ser cero
Ythumbnail 1 Recuento de píxeles verticales de la miniatura incrustada siguiente. No debe ser cero
Paleta de miniaturas 768 256 entradas de paleta, cada una con un valor de color RGB de 24 bits
Datos en miniatura n Un byte por píxel que contiene el índice del color dentro de la paleta,

con n = Xthumbnail × Ythumbnail

Miniatura almacenada con tres byte por píxel
campo Tamaño (bytes) Descripción
Xthumbnail 1 Recuento horizontal de píxeles de la siguiente miniatura incrustada. No debe ser cero
Ythumbnail 1 Recuento de píxeles verticales de la miniatura incrustada siguiente. No debe ser cero
Datos en miniatura 3 × n Datos de miniaturas RGB de 24 bits sin comprimir (8 bits por canal de color) en el orden R0, G0, B0,... Rn-1, Gn-1, Bn-1; con n = Xthumbnail × Ythumbnail

Compatibilidad editar

El nuevo formato de fichero de imagen intercambiable (Exif) es comparable a JFIF, pero los dos estándares son mutuamente incompatibles. Esto se debe a que ambos estándares especifican que su segmento de aplicación particular (APP0 para JFIF, APP1 por Exif) debe seguir inmediatamente el marcador SOI. En la práctica, muchos programas y cámaras digitales producen ficheros con los dos segmentos de aplicación incluidos. Esto no afectará a la decodificación de imágenes para la mayoría de los descodificadores, pero los analizadores JFIF o Exif mal diseñados pueden no reconocer el fichero correctamente.

JFIF es compatible con las extensiones JPEG "Bloque de Recursos de Información" de Adobe Photoshop los metadatos del modelo de intercambio de información IPTC, ya que JFIF no excluye otros segmentos de aplicación, y las extensiones de Photoshop no están obligadas a ser las primeras del fichero. Sin embargo, Photoshop generalmente ahorra memorias intermedias CMYK como "JPEG de Adobe" de cuatro componentes que no están conformes con JFIF. Dado que estos ficheros no se encuentran en un espacio de color YCbCr, normalmente no son descodibles por los navegadores web y otros programas de Internet.

Historia editar

El desarrollo del documento JFIF fue dirigido por Eric Hamilton, de C-Cube Microsystems, y el acuerdo sobre la primera versión se estableció a finales de 1991 en una reunión celebrada en C-Cube que contó con aproximadamente 40 representantes de diversas empresas de informática, telecomunicaciones e imagen. Poco después se publicó una revisión menor: JFIF 1.01.[4]​ Durante casi 20 años, la última versión disponible fue v1.02, publicada el 1 de septiembre de 1992.[5]

En 1996, RFC 2046 especificó que el formato de imagen utilizado para transmitir imágenes JPEG a través de Internet debería ser JFIF. El tipo MIME de "imagen / jpeg" se codificará como JFIF. En la práctica, sin embargo, prácticamente todo el software de Internet puede decodificar cualquier imagen JIF de línea de base que utilice componentes Y o Y y C, tanto si cumple JFIF como si no.

Con el paso del tiempo, C-Cube se reestructuró (y finalmente se convirtió en Harmonic, LSI Logic, Magnum Semiconductor, Avago Technologies, Broadcom y GigOptix, GigPeak, etc.) y perdió el interés por el documento y la especificación no tenía ningún editor oficial hasta que fue recogido por Ecma International y el grupo conjunto de expertos fotográficos ITU-T / ISO / IEC hacia el 2009 para evitar que se perdiera en la historia y proporcionar una manera de citarlo formalmente en publicaciones estándar y mejorar la calidad editorial. Fue publicado por la ECMA en 2009 como informe técnico número 98 para evitar la pérdida del registro histórico,[6]​ y fue formalizado formalmente por el UIT-T en 2011 como Recomendación T.871[7]​ y por la ISO / IEC 2013. como ISO / IEC 10918-5,[8]​ Las publicaciones más recientes incluyen mejoras editoriales, pero no hay cambios técnicos sustanciales.

Véase también editar

Referencias editar

  1. «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 de febrero de 1992. Consultado el 15 de junio de 2015. 
  2. «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 de febrero de 1992. Consultado el 15 de junio de 2015. 
  3. Hamilton, Eric (12 de septiembre de 1992). «JPEG File Interchange Format, Version 1.02» (pdf, 0.02 MB). Consultado el 15 de junio de 2015. 
  4. «JPEG File Interchange Format (JFIF)». ecma-international.org. Consultado el 15 de junio de 2015. 
  5. Hamilton, Eric (12 de septiembre de 1992). «JPEG File Interchange Format, Version 1.02» (pdf, 0.02 MB). Consultado el 15 de junio de 2015. 
  6. «JPEG File Interchange Format (JFIF)». ecma-international.org. Consultado el 15 de junio de 2015. 
  7. ITU-T, ed. (14 de mayo de 2011). «Recommendation ITU-T T.871: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF)» (PDF). Consultado el 15 de junio de 2015. 
  8. ISO/International Electrotechnical Commission, ed. (1 de mayo de 2013). «ISO/IEC 10918-5:2013: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF).». Consultado el 15 de junio de 2015. 

Bibliografía editar

Libros editar

Estándares editar

Enlaces externos editar