Ir al contenido

PGD | §2.6 – Formatos de archivo para imágenes

< §2.5 – Métodos de compresión en la práctica

Ya que no hay una manera única de definir una secuencia de bytes que contenga toda la información de una imagen dada, numerosos formatos de archivo de imagen se fueron creando a lo largo del tiempo según los tipos de cuantificación y las diferentes necesidades. Sin embargo, vistos a gran escala cada uno de ellos define el archivo de imagen como compuesto por dos secuencias:

  • La primera, con la cual empieza el archivo, se denomina encabezamiento (header) y tiene, entre otras cosas:
    • Un grupo de bytes que identifican ese formato en particular, conocido como firma (signature) o también número mágico (magic number);
    • Datos de la digitalización, como ancho y alto en pixeles, tipo de cuantificación, etc.;
    • Otros que dan cuenta de datos relativos a la imagen, llamados metadatos (metadata), que pueden incluir información sobre el autor, el programa empleado en su creación, palabras clave que permitan luego buscar esta imagen en una base de datos, advertencias de copyright, etc.
  • La segunda contiene la secuencia de bytes que definen la imagen en sí.

En algunos casos, se agrega una tercera secuencia de verificación, conocida como suma de comprobación (checksum) que permite saber si la secuencia total ha sido alterada (por errores de transmisión, de copiado u otros motivos).

Existe una enorme variedad de formatos de archivo de imagen, que si bien comparten esta estructura a grandes rasgos difieren en la forma en que la cual se genera cada secuencia (metadatos e imagen en sí). Según el contexto en la que fueron creados, pueden utilizarse para ciertos tipos de cuantificación de color, mientras que no pueden almacenar imágenes de otros tipos. Algunos de ellos incluso están restringidos a un solo tipo de cuantificación. Haremos una descripción de los formatos más comunes en las aplicaciones que nos interesan.

TIFF (Tagged Image File Format)

Creado y propuesto por Aldus (hoy Adobe) a mediados de la década de 1980, TIFF fue un intento de acordar un formato estándar para almacenar imágenes creadas por los principales fabricantes de escáneres de escritorio de entonces, en lugar de emplear formatos propietarios. Originalmente permitía guardar imágenes de sólo 1 bit (bitmaps), ya que ésa era la capacidad de esos primeros equipos, pero con el tiempo se amplió a imágenes grayscale, color RGB y color CMYK. Las extensiones de archivo habituales de este formato son .tif ó .tiff.

El nombre (Formato de Archivo de Imágenes Etiquetadas) proviene del hecho que la especificación TIFF define una manera de guardar datos de la imagen mediante etiquetas (tags) claramente reconocibles dentro del archivo, con la idea de permitir extender el formato con nuevos datos manteniendo su compatibilidad con versiones anteriores (retrocompatibilidad). Esto se logra exigiendo a los programas diseñados para leer imágenes TIFF que simplemente ignoren los tags que no son capaces de reconocer.

La especificación actual (versión 6) permite varios agregados, a saber: profundidades de más de 8 bits, imágenes múltiples en el mismo archivo, compresión con y sin pérdida y el uso de capas (layers). También permite manejar transparencia mediante un canal alfa (alpha channel).

El encabezamiento de un archivo TIFF consta de 8 bytes. Los dos primeros son los códigos ASCII de los caracteres “II” o bien “MM”, que indican si en los valores formados por secuencias de dos bytes el primero es el menos significativo o el más significativo respectivamente. Luego sigue el número 42 escrito utilizando dos bytes según la convención anterior; estos primeros 4 bytes forman la firma de un archivo TIFF, que permiten así reconocerlo. Los últimos cuatro forman un número de desplazamiento (offset) que ubica el punto del archivo donde comienzan los datos de la imagen en sí.

JPEG / JFIF (JPEG File Interchange Format)

A diferencia de TIFF, donde las técnicas de compresión se agregaron al formato a posteriori, JFIF es un formato de archivo de imagen estándar creado a partir del algoritmo JPEG de compresión. Por la esencia de este algoritmo, las imágenes JPEG se aplican cuando la imagen se cuantifica de modo tal que muestras contiguas admitan valores numéricamente relacionados. Esto descarta las imágenes en mapa de bits y color indexado, por lo que se aplican a escala de gris, RGB y CMYK con profundidades de 8 bits sin transparencia. Las extensiones de archivo habituales de este formato son .jpg y .jpeg.

Aunque el nombre JPEG denota el algoritmo de compresión y JFIF es el formato de archivo que lo emplea, el uso corriente tiende a identificar ambas cosas como JPEG. Sin embargo ciertos formatos que no son JFIF pueden también emplear compresión JPEG, entre ellos TIFF y EPS.

De manera análoga a TIFF, un archivo de imagen JPEG contiene secciones dentro del mismo denominados marcadores (markers) que introducen un dato o grupos de datos acerca de la imagen. Uno de ellos en especial oficia de firma para este formato, por lo que debe aparecer primero. Como la longitud de este primer marcador puede variar, los primeros dos bytes indican su longitud; a continuación siguen los caracteres “JFIF” seguidos de un byte nulo. Por lo tanto, un archivo JPEG/JFIF se identifica por tener los bytes tercero a séptimo inclusive iguales a 76, 70, 73, 70, 0, es decir, los códigos ASCII de los caracteres indicados.

EPS (Encapsulated PostScript)

Si bien veremos con mayor profundidad los conceptos relacionados con PostScript en la unidad 3, digamos que este formato permite encapsular (y de allí el nombre) instrucciones en el lenguaje PostScript de descripción de páginas para especificar contenidos como imágenes, textos y dibujos (éstos últimos basados en curvas, también llamados imágenes vectoriales). Cuando se lo emplea para contener imágenes digitalizadas, puede considerarse como un formato que puede hacer uso o no de compresión JPEG con cuantificación grayscale, RGB o CMYK de 8 bits por canal sin transparencia. Durante mucho tiempo fue el formato estándar en el intercambio de imágenes para uso de los primeros programas de diseño de página, como Aldus® PageMaker® y QuarkXPress®. La extensión de archivo que le corresponde es .eps y ocasionalmente .epsf y .epsi.

El hecho de tener la capacidad de expresar curvas permite a una imagen EPS contener un trazado de recorte (clipping path), que esencialmente es una curva que define el contorno que debe tomarse de la imagen, ignorando lo queda fuera del mismo. Debido a su marcada orientación a los procesos gráficos, el formato puede opcionalmente especificar datos de generación de tramas y curvas de transferencia para, por ejemplo, compensar ganancias de punto en impresión.

EPS DCS (EPS Desktop Color Separation)

Es una variante primitiva de los días en que los procesadores de documentos que debían utilizarse para filmar películas requerían que los canales CMYK estuvieran separados unos de otros, ya que esos equipos necesitaban accederlos uno a la vez. Por ello se creó una norma, conocida como Separaciones Color de Escritorio (DCS) que describía cómo guardar una imagen como un conjunto de 5 archivos, a saber: uno con una versión del contenido original o compuesto (composite) en baja resolución y otros cuatro con cada separación en alta resolución. El origen del nombre radica en que permitía realizar el trabajo de separación desde la aplicación de escritorio. El formato se considera actualmente obsoleto. La extensión del archivo compuesto es .eps, mientras que las extensiones de las separaciones son .c, .m, .y y .k respectivamente.

Esencialmente ésta era la forma especificada en la versión original de esta norma (DCS 1.0). El inconveniente de tener que mantener varios archivos diferentes para la misma página se superó luego con la versión siguiente (DCS 2.0) donde en un único archivo se guardan, secuencialmente, la versión compuesta y los cuatro canales.

PSD (Photoshop Document Format) / PSB (Photoshop Large Document Format)

Estos formatos son los empleados por el programa estándar de facto de edición de imágenes, Adobe® Photoshop®. Se trata de formatos nativos, es decir, propios de esta aplicación, pero cuya especificación es pública, por lo cual existen ciertos programas y utilidades con alguna capacidad para leer estos archivos. Cada nueva versión de Photoshop introduce en general un nuevo formato PSD que permite incluir toda la funcionalidad presente en esa versión; en particular puede contener transparencia, canales múltiples y diversos tipos de capas, incluyendo capas de texto y de objetos 3D. El formato emplea RLE como mecanismo de compresión. Las extensiones de archivo oficiales son .psd y .psb respectivamente. El formato PSB es similar a PSD, pero diseñado para contener archivos de tamaño mayor a 2 GB.

GIF (CompuServe Graphics Interchange Format)

Poco después del lanzamiento del método de compresión sin pérdida LZW, una empresa proveedora de servicios on-line, CompuServe, introdujo este formato en 1987 (cuyo nombre significa simplemente Formato para Intercambio de Gráficos) para la transmisión de imágenes haciendo uso de LZW como mecanismo de compresión, por ser más eficiente que el empleado en un formato previo que utilizaba RLE. Fue diseñado desde el principio para imágenes en color indexado solamente, con tablas de color o paletas de hasta 8 bits. Fue el primer formato para imágenes color que se empleó en la Web. La extensión de archivo empleada es .gif.

Si bien el color indexado no es el mejor modo para representar imágenes fotográficas, es en cambio muy eficiente para digitalizar imágenes de línea con pocos colores (por ejemplo logos). Este hecho, junto con la necesidad de emplear el modelo de color RGB para permitir el modo indexado, hace que este formato, muy popular actualmente en Internet, sea inadecuado para su uso en artes gráficas.

Existen básicamente dos versiones de GIF: la original, denominada GIF87a, y una versión mejorada introducida en 1989 conocida como GIF89a; esta última permite que la imagen presente animaciones simples, y es la versión más utilizada. Los primeros seis bytes de un archivo GIF contienen los códigos ASCII de los caracteres “GIF87a” y “GIF89a” respectivamente.

GIF permite el uso de transparencia pero no como canal alfa sino como una entrada más en la paleta de color de la imagen. Esto significa que los pixeles que tengan un cierto índice deben ser tratados como transparentes; por lo tanto, el efecto de transparencia, a diferencia de un canal alfa, es binario; cada pixel es o no transparente, sin permitir grados intermedios de opacidad.

PNG (Portable Network Graphics)

Cuando CompuServe introduce el formato GIF, no conocía que el algoritmo de compresión LZW estaba patentado, por lo cual se vio obligado en 1993 a entrar en negociaciones con el propietario de la patente, la empresa UniSys. Llegaron a un acuerdo, pero imponía el pago de cánones por el uso del formato por el hecho de emplear en su definición un algoritmo patentado. Esto provocó mucho revuelo, incluyendo la amenaza de usuarios y empresas de boicotear el formato. En 1995 se desarrolló un formato alternativo que no requería el uso de tecnología patentada y que podía proveer la funcionalidad principal de GIF; se lo bautizó como Gráficos de Red Portátiles o PNG. La extensión de archivo empleada es .png.

Además de color indexado, PNG soporta grayscale y RGB, pero no CMYK, por lo cual tampoco es apropiado en gráfica. Supera a GIF en cuanto a compresión, ya que emplea el algoritmo Deflate, que es algo más eficiente que LZW; en cuanto a color, ya que las imágenes RGB pueden ser de 8 y 16 bits por canal; y en cuanto a transparencia, ya que permite utilizar un canal alfa. Sin embargo, al menos en su definición original, no soporta animaciones.

Un archivo PNG comienza con la siguiente firma de 8 bytes: 137, 80, 78, 71, 13, 10, 16, 10. Todos ellos tienen una razón técnica; en especial, los 3 bytes desde el segundo al cuarto son los códigos ASCII de los caracteres “PNG”, que permite identificar este formato fácilmente.

BMP (Windows Bitmap)

BMP es el formato de imagen estándar de Windows. A pesar de que el nombre parece sugerir una imagen de 1 bit por pixel, en realidad permite contener color indexado de 4 y 8 bits, color de 16 y 24 bits y color más canal alfa de 32 bits, además de bitmaps (en el sentido convencional). Por lo general sólo emplea compresión RLE en color indexado. La extensión de archivo correspondiente es .bmp.

Este formato es muy común en la plataforma Windows, pero no tiene mucho soporte fuera de ella; por otro lado, al no utilizar compresión con profundidades de color de más de 8 bits, los archivos BMP suelen ser mucho mayores que otros conteniendo la misma imagen.

RAW

Este tipo es el nombre genérico que reciben los formatos utilizados por ciertas cámaras digitales que contienen datos “en crudo” (raw, en inglés), tal como los obtiene el sensor empleado. A diferencia de los anteriores, el formato es propietario de cada fabricante, y es necesario un software especial (o un plug-in de Photoshop) para obtener una imagen utilizable.

La necesidad de un software especial radica en el hecho que los datos sólo pueden interpretarse correctamente conociendo íntimamente el funcionamiento del sensor de imagen, información que el fabricante no hace pública. No existe una extensión única, ya que cada fabricante emplea la propia; las más conocidas son .nef de Nikon, .crw y .cr2 de Canon, etc. —

FormatoOpciones de compresiónCuantificación de colorTransparenciaAplicaciones
BitmapColor indexadoGrayscaleRGBCMYKCMYK + SpotPixeles transparentesCanal alfa
TIFFSin comprimir,
LZW,
JPEG
✓✓✓✓✓✓Gráfica
JPEG/JFIFJPEG✓✓✓Gráfica, internet, uso general
EPSSin comprimir, JPEG✓✓✓✓✓✓Gráfica, ilustración vectorial
EPS DCSSin comprimir,
JPEG
✓✓✓✓Gráfica
PSDRLE✓✓✓✓✓✓✓✓Edición fotográfica
GIFLZW✓✓Internet
PNGDeflate✓✓✓✓✓✓Internet
BMPSin comprimir,
RLE
✓✓✓✓✓✓Uso general (sólo Windows)

Otros formatos

Una lista completa de los formatos de archivo de imagen sería demasiado extensa; por otro lado, los formatos presentados abarcan la gran mayoría de las posibilidades que los profesionales gráficos y diseñadores de páginas web encontrarán a diario.

Actividades para el capítulo §2.6

  1. Obtenga un archivo de cada formato enumerados en este capítulo, preferentemente no muy “pesados” (menores a 1 MB) y compruebe en el encabezamiento de cada uno la presencia del “numero mágico” tal como fue presentado aquí. Lo ideal para ello es utilizar un editor hexadecimal, pero podemos improvisar uno sencillamente utilizando el Bloc de Notas (en Windows) o el TextEdit (en Mac). Para examinar un archivo, abra una ventana en blanco del Bloc de Notas y arrastre y suelte uno de estos archivos sobre esa ventana. En unos segundos (dependiendo de la velocidad del equipo) podrán verse una serie de caracteres que parecen no tener sentido, pero examinando los primeros de ellos puede detectarse la secuencia distintiva de cada formato. El mismo procedimiento en Mac consiste en abrir TextEdit con un documento nuevo y arastrar el archivo hasta el ícono del programa en el Dock.
  2. En el cuadro precedente existen algunos “agujeros”, correspondientes a aquellos formatos que no aceptan determinada cuantificación; por ejemplo JPEG no acepta color indexado. En realidad hay una combinación permitida que no está marcada con ✓. Elija algunas imágenes en esas cuantificaciones, e intente guardarlas en Photoshop mediante Guardar como… para que el programa muestre los formatos permitidos para ese modo de cuantificación. Compare con el cuadro y determine cuál es la marca permitida faltante.

§2.7 – Efectos colaterales de la digitalización >