⚠️ Este es un sitio de traducción no oficial, sin relación con ImageMagick Studio LLC. Para información autorizada, consulte la página original (https://imagemagick.org/miff/).

Formato MIFF

Encabezado MIFF • Datos binarios MIFF

El Magick Image File Format (MIFF) es el formato propio e independiente de plataforma de ImageMagick para almacenar imágenes de mapa de bits. Tiene una ventaja sobre otros formatos de imagen, ya que almacena todos los metadatos conocidos por ImageMagick (p. ej. perfiles de color de la imagen, comentarios, autor, copyright, etc.), mientras que otros formatos pueden admitir solo una pequeña parte de los metadatos disponibles o ninguno en absoluto. Un archivo de imagen MIFF consta de dos secciones. La primera sección es un encabezado compuesto por claves que describen la imagen en forma de texto. La siguiente sección son los datos binarios de la imagen. Analizamos estas secciones en detalle a continuación.

Encabezado MIFF

El encabezado MIFF está compuesto enteramente por caracteres ISO-8859-1. Los campos del encabezado son combinaciones de clave y valor en el formato key = value, y cada clave y valor se separan mediante un signo igual (=). Cada combinación key = value se delimita con al menos un carácter de control o de espacio en blanco. Los comentarios pueden aparecer en la sección del encabezado y siempre se delimitan con llaves. El encabezado MIFF siempre termina con un carácter de dos puntos (:), seguido de un carácter ctrl-Z. También es común anteponer a los dos puntos un carácter de avance de página (formfeed) y un carácter de nueva línea. El avance de página evita que se listen los datos binarios al usar el programa more de Linux, mientras que el ctrl-Z tiene el mismo efecto con el comando type en la línea de comandos de Windows.

La siguiente es una lista parcial de combinaciones key = value que se encuentran habitualmente en un archivo MIFF:

Clave Descripción
background-color = color
border-color = color
matte-color = color estas claves opcionales reflejan respectivamente los colores de fondo, borde y mate de la imagen. Un color puede ser un nombre (p. ej. white) o un valor hexadecimal (p. ej. #ccc).
class = el tipo de datos binarios de píxel almacenados en el archivo MIFF. Si esta clave no está presente, se asumen datos de píxel DirectClass.
colors = value el número de colores en una imagen DirectClass. En una imagen PseudoClass, esta clave especifica el número de entradas del mapa de color. Si esta clave no está presente en el encabezado y la imagen es PseudoClass, se asume un mapa de color en escala de grises lineal de 256 colores. El número máximo de entradas del mapa de color es 65536.
colorspace = el espacio de color de los datos de píxel. El valor predeterminado es RGB.
columns = value el ancho de la imagen en píxeles. Esta es una clave obligatoria y no tiene valor predeterminado.
compression = el tipo de algoritmo usado para comprimir los datos de la imagen. Si esta clave no está presente, se asume que los datos de píxel no están comprimidos.
delay = microseconds el retardo entre fotogramas en una secuencia de imágenes, en microsegundos.
depth = la profundidad de un único valor de color que representa valores de 0 a 255 (profundidad 8), de 0 a 65535 (profundidad 16) o de 0 a 4294967295 (profundidad 32). Si esta clave está ausente, se asume una profundidad de 8.
dispose = value método de descarte de capas. Estos son los valores válidos: 0 = No se especifica descarte. 1 = No descartar entre fotogramas. 2 = Sobrescribir el fotograma con el color de fondo del encabezado. 3 = Sobrescribir con el fotograma anterior.
gamma = value la gamma de la imagen. Si no se especifica, se asume una gamma de 1.0 (respuesta de brillo lineal).
id=ImageMagick identifica el archivo como un archivo de imagen en formato MIFF. Esta clave es obligatoria, debe ser el primer par clave-valor, solo puede aparecer una vez y no tiene valor predeterminado. Aunque esta clave puede aparecer en cualquier lugar del encabezado, debería iniciarse como la primera clave del encabezado en la columna 1. Esto permitirá que programas como file(1) identifiquen fácilmente el archivo como MIFF.
iterations = value el número de veces que una secuencia de imágenes se repite en bucle antes de detenerse.
label = { string ] define un título o pie de foto breve para la imagen. Si la etiqueta contiene cualquier espacio en blanco, debe encerrarse entre llaves.
matte = especifica si la imagen tiene datos de mate. Los datos de mate suelen ser útiles para la composición de imágenes.
montage = x[+-][+-] tamaño y ubicación de las teselas individuales de una imagen compuesta. Use esta clave cuando la imagen sea un compuesto de varias teselas diferentes. Una tesela consta de una imagen y, opcionalmente, un borde y una etiqueta. Width es el tamaño en píxeles de cada tesela individual en la dirección horizontal y height es el tamaño en la dirección vertical. Cada tesela debe tener un número igual de píxeles de ancho e igual de alto. Sin embargo, el ancho puede diferir del alto. X offset es el desplazamiento en número de píxeles desde el borde vertical de la imagen compuesta donde comienza la primera tesela de una fila, e y offset es el desplazamiento desde el borde horizontal donde comienza la primera tesela de una columna. Si se especifica esta clave, debe seguir al encabezado de la imagen un directorio de nombres de teselas. El formato del directorio se explica a continuación.
page = value tamaño y ubicación preferidos de un lienzo de imagen.
profile-icc = value el número de bytes del perfil de color del International Color Consortium. El perfil está definido por la especificación de perfiles ICC ubicada en http://www.color.org/icc_specs2.html.
red-primary = x,y
green-primary = x,y
blue-primary = x,y
white-point = x,y esta clave opcional refleja las primarias de cromaticidad y el punto blanco.
rendering-intent = El propósito de renderizado (rendering intent) es la propiedad CSS-1 definida por el International Color Consortium (http://www.color.org).
resolution = x resolución vertical y horizontal de la imagen. Consulte units para conocer las unidades de resolución específicas (p. ej. píxeles por pulgada).
rows = value el alto de la imagen en píxeles. Esta es una clave obligatoria y no tiene valor predeterminado.
scene = value el número de secuencia de este archivo de imagen MIFF. Esta clave opcional es útil cuando un archivo de imagen MIFF es uno dentro de una secuencia de archivos usados en una animación.
signature = value esta clave opcional contiene una cadena que identifica de forma única el contenido de los píxeles de la imagen. Se recomienda el algoritmo de resumen de mensajes SHA-256 del NIST.
units = unidades de resolución de la imagen.

Se permiten otros pares clave-valor. Si un valor contiene espacios en blanco, debe encerrarse entre llaves como se ilustra aquí:

id=ImageMagick
class=PseudoClass  colors=256  matte=False
columns=1280  rows=1024  depth=8
compression=RLE
colorspace=RGB
copyright={© 1999-2017 ImageMagick Studio LLC}
⋮

Tenga en cuenta que las combinaciones key = value pueden separarse por saltos de línea o espacios y pueden aparecer en cualquier orden dentro del encabezado. Los comentarios (entre llaves) pueden aparecer en cualquier lugar antes de los dos puntos.

Si especifica la clave montage en el encabezado, haga seguir al encabezado un directorio de teselas de imagen. Este directorio consta del nombre de cada tesela de la imagen compuesta, separado por un carácter de nueva línea. La lista se termina con un carácter NULL.

Si especifica la clave color-profile en el encabezado, haga seguir al encabezado (o al directorio de montaje si la clave montage está en el encabezado) el perfil de color binario.

El encabezado se separa de los datos de la imagen mediante un carácter : seguido inmediatamente de una nueva línea.

Datos binarios MIFF

A continuación vienen los propios datos binarios de la imagen. Cómo se formatean los datos de la imagen depende de la clase de la imagen, según se especifique (o no) mediante el valor de la clave class en el encabezado.

Las imágenes DirectClass son imágenes de tono continuo, almacenadas como valores de intensidad RGB (rojo, verde, azul), RGBA (rojo, verde, azul, alfa), CMYK (cian, amarillo, magenta, negro) o CMYKA (cian, amarillo, magenta, negro, alfa) según lo definido por la clave colorspace. Cada valor de intensidad ocupa un byte de longitud para imágenes de profundidad 8 (0..255), dos bytes para una profundidad de 16 (0..65535), y las imágenes de profundidad 32 (0..4294967295) requieren cuatro bytes en orden de byte más significativo primero.

Las imágenes PseudoClass son imágenes RGB con mapa de color. El mapa de color se almacena como una serie de valores de píxel rojo, verde y azul, ocupando cada valor un byte de tamaño. Si la profundidad de la imagen es 16, cada entrada del mapa de color consume dos bytes con el byte más significativo en primer lugar. El número de entradas del mapa de color está definido por la clave colors. Los datos del mapa de color aparecen inmediatamente después del encabezado (o del directorio de imagen si la clave montage está en el encabezado). Los datos de imagen PseudoClass son una matriz de valores de índice en el mapa de color. Si hay 256 colores o menos en la imagen, cada byte de los datos de imagen contiene un valor de índice. Si la imagen contiene más de 256 colores o la profundidad de la imagen es 16, el valor de índice se almacena como dos bytes contiguos con el byte más significativo en primer lugar. Si matte es true, cada índice del mapa de color va seguido de un valor alfa de 1 o 2 bytes.

Los datos de píxel de la imagen en un archivo MIFF pueden estar sin comprimir, codificados por longitud de series (runlength), comprimidos con Zip o comprimidos con BZip. La clave compression del encabezado define cómo se comprimen los datos de la imagen. Los píxeles sin comprimir se almacenan una línea de barrido a la vez, en orden de fila. La compresión por codificación de longitud de series cuenta las series de píxeles adyacentes idénticos y almacena los píxeles seguidos de un byte de longitud (el número de píxeles idénticos menos 1). La compresión Zip y BZip comprime cada fila de una imagen y antepone a la fila comprimida la longitud de los bytes de píxel comprimidos como una palabra en orden de byte más significativo primero.

Los archivos MIFF pueden contener más de una imagen. Simplemente concatene cada imagen individual (compuesta por un encabezado y datos de imagen) en un solo archivo.