Articulo de referencia

ILBM

.iff , .lbm "},"icon":{"wt":"[[File:Electronic Arts historical logo 80s.svg|frameless]]"},"iconcaption":{"wt":""},"screenshot":{"wt":""},"caption":{"wt":""},"owner":{"wt":"[[Ele...

El formato Interleaved Bitmap ( ILBM ) es un formato de archivo de imagen que cumple con el estándar Interchange File Format (IFF). Este formato se originó en la plataforma Amiga , y en sistemas compatibles con IBM , los archivos en este formato o en el formato PBM (Planar Bitmap) relacionado se encuentran habitualmente en juegos de finales de los años 80 y principios de los 90 que eran adaptaciones de Amiga o cuyos recursos gráficos se diseñaron en máquinas Amiga.

Una característica distintiva del formato es que almacena mapas de bits en forma de planos de bits entrelazados , lo que le da nombre; esto refleja la forma en que el hardware gráfico de Amiga lee de forma nativa los datos gráficos de la memoria. Se admite PackBits , una forma sencilla de compresión , para que los archivos ILBM sean más compactos. [ 4 ]

En la Amiga, estos archivos no están asociados a una extensión de archivo en particular , aunque a medida que comenzaron a usarse en sistemas PC donde las extensiones se usan sistemáticamente, emplearon una extensión .lbm o, en ocasiones, una extensión .pbm .

Formato de archivo

ILBM es una implementación del formato de archivo IFF que consta de varios fragmentos consecutivos, cuyo orden puede variar hasta cierto punto. Cada fragmento tiene una función diferente y el mismo formato básico. Esto significa que un programa no tiene que leer ni decodificar todos los fragmentos de un archivo, sino solo aquellos con los que quiere trabajar o que puede comprender. [ 4 ]

Los archivos ILBM suelen contener suficiente información para que un programa de edición de imágenes pueda visualizarlos, incluyendo las dimensiones, la paleta y los datos de píxeles. Algunos archivos se diseñaron para funcionar como paletas de colores (dejando los datos de píxeles en blanco) o para integrarse en otra imagen. Esto los hace mucho más flexibles, pero también mucho más complejos que otros formatos como BMP.

Para los ILBM, el fragmento BMHD (Bit Map Header) y cualquier otro fragmento "vital" deben aparecer antes del fragmento BODY . Cualquier fragmento que aparezca después de BODY se considera "extra" y muchos programas lo dejarán sin leer y sin modificar. [ 4 ]

BMHD: Encabezado de mapa de bits

El fragmento BMHD especifica cómo se mostrará la imagen y suele ser el primer fragmento dentro del FORM . No solo define la altura/anchura de la imagen, sino también dónde se dibuja en la pantalla, cómo mostrarla en diferentes resoluciones y si la imagen está comprimida. El contenido de este fragmento es el siguiente: [ 4 ]

CUERPO: Datos de imagen

El fragmento BODY suele ser el último fragmento de un archivo, [ 4 ] y el más grande .

En los archivos ILBM, el bloque BODY almacena los datos de la imagen como planos de bits intercalados (y una máscara opcional) por fila. Los planos de bits aparecen primero del 1 al n, seguidos del plano de máscara. Si la imagen no está comprimida, cada línea constará de (width + 15) / 16valores de 16 bits (es decir, un bit por píxel, redondeado al múltiplo de 16 bits más cercano). Si está comprimida, cada línea se comprime individualmente y siempre tiene una longitud de múltiplo de 16 bits al comprimirse. [ 4 ]

En los archivos PBM, el bloque BODY es más simple, ya que sin comprimir es simplemente un flujo continuo de bytes que contienen datos de imagen.

Compresión

Si una imagen se comprime, cada fila de datos (pero no cada plano de bits) se comprime individualmente, incluyendo los datos de la máscara si están presentes. La compresión es una variante de la codificación de longitud de ejecución (RLE) que utiliza indicadores. Se puede decodificar de la siguiente manera: [ 4 ]

  • Repetir hasta que tengamos [Longitud final] bytes de datos (la longitud final se calcula a partir del tamaño de la imagen).
  • Mientras [Longitud de los datos descomprimidos] < [Longitud final]:
    1. Leer un byte [Valor]
    2. Si [Valor] > 128, entonces:
      • Lee el siguiente byte y muéstralo (257 - [Valor]) veces.
      • Avanza 2 bytes y regresa al paso 1.
    3. De lo contrario, si [Valor] < 128, entonces:
      • Lee y muestra los siguientes [valor + 1] bytes.
      • Avanza [Valor + 2] bytes y regresa al paso 1.
    4. De lo contrario, [Valor] = 128, salir del bucle (detener la descompresión).

Para la rutina de compresión, lo mejor es codificar una repetición de 2 bytes como una réplica, excepto cuando esté precedida y seguida por una secuencia literal, en cuyo caso es mejor fusionar las tres en una sola secuencia literal. Siempre codifique las repeticiones de más de 3 bytes como réplicas. [ 4 ]

CAMG: Modo Amiga

Un fragmento CAMG es específico para el ordenador Commodore Amiga. Almacena un modo de visualización LONG. Esto permite especificar modos de visualización de Amiga como "campo de juego dual" y "mantener pulsado y modificar". Como era de esperar, es poco común fuera de los juegos de Amiga.

Si necesita convertir o visualizar archivos que puedan contener fragmentos CAMG significativos, consulte las "Notas sobre cómo trabajar con archivos ILBM" a continuación.

CMAP: Paleta

El fragmento CMAP contiene la paleta de la imagen y consta de valores RGB de 3 bytes para cada color utilizado. Cada byte está entre 0 y 255 inclusive. El fragmento tiene 3 × numColoursuna longitud de bytes. El número de colores en la paleta será 2 ^ numBitplanes. Este fragmento es opcional y se utilizará una paleta predeterminada si no está presente. Es posible tener menos entradas de las esperadas (por ejemplo, 7 colores para un mapa de bits de 4 planos y '16 colores'). Recuerde que si tiene un número impar de colores, según la especificación IFF, el fragmento se rellenará con un byte para que tenga una longitud par, pero el byte de relleno no se incluye en el campo de longitud del fragmento. [ 4 ]

CRNG: Gama de colores

El fragmento de rango de color es "no estándar". El programa Deluxe Paint de Electronic Arts lo utiliza para identificar un rango contiguo de registros de color o un "rango de tonalidades" y el ciclo de color. Puede haber cero o más fragmentos CRNG en un archivo ILBM, pero todos deben aparecer antes del fragmento BODY . Deluxe Paint normalmente escribe 4 fragmentos CRNG en un archivo ILBM cuando el usuario le pide que "Guarde la imagen". [ 4 ]

CCRT: Ciclo de color

El programa Graphicraft de Commodore utiliza CCRT para el rango y la sincronización del ciclo de colores . Este fragmento contiene una estructura CycleInfo. Al igual que CRNG, es un fragmento no estándar. [ 4 ]

Los datos son similares a un fragmento de CRNG . Un programa probablemente solo usaría uno de estos dos métodos para expresar los datos del ciclo de color. Podrías escribir ambos si quieres comunicar esta información tanto a DeluxePaint como a Graphicraft. [ 4 ]

DEST: Combinación de planos de bits

La propiedad opcional DEST es una forma de controlar cómo dispersar cero o más planos de bits de origen en una imagen de destino más profunda. Algunos lectores pueden ignorar DEST. [ 4 ]

El número de bits de menor orden en planePick, planeOnOff y planeMask se corresponde uno a uno con los planos de bits de destino. El bit 0 se corresponde con el plano de bits 0, etc. Cualquier bit de orden superior debe ignorarse. [ 4 ]

Los bits "1" en planePick significan "colocar el siguiente plano de bits de origen en este plano de bits", por lo que el número de bits "1" debe ser igual a numPlanes. Los bits "0" significan "colocar el bit correspondiente de planeOnOff en este plano de bits". [ 4 ]

Los bits en planeMask compuerta escriben en el plano de bits de destino: los bits "1" significan "escribir en este plano de bits" mientras que los bits "0" significan "dejar este plano de bits intacto". El caso normal (sin bloque DEST ) es equivalente a planePick = planeMask = (2 ^ numPlanes) - 1. [ 4 ]

Recuerde que los números de color se forman mediante píxeles en el mapa de bits de destino (profundidad de planos profundos), no en el mapa de bits de origen (numPlanes planos profundos). [ 4 ]

GRAB: Punto de acceso

El fragmento GRAB opcional localiza un "mando" o "punto de acceso" de la imagen en relación con su esquina superior izquierda, por ejemplo, cuando se usa como cursor del ratón o como un "pincel". Es opcional. [ 4 ]

SPRT: Orden Z

El fragmento SPRT indica que una imagen está destinada a ser un sprite. Por lo tanto, debe tener un plano de máscara o un color transparente y no debe ocupar toda la pantalla. La forma en que se maneja esto depende del programa que utiliza la imagen. El único dato almacenado aquí es el orden del sprite, utilizado por muchos programas para colocar el sprite en primer plano (un sprite de orden 1 aparece detrás de uno de orden 0, etc.). Es opcional. [ 4 ]

PEQUEÑO: Miniatura

El fragmento TINY contiene una pequeña imagen de vista previa para diversos programas de diseño gráfico, incluido Deluxe Paint. Está comprimido y su formato es similar al del fragmento BODY .

Notas para trabajar con ILBM

Mapas de colores

A veces, un archivo ILBM contiene solo un mapa de colores y no datos de imagen. Se suele utilizar para almacenar una paleta de colores que se puede aplicar a una imagen por separado. En este caso, el bloque BODY debe estar vacío y el campo numPlanes en el bloque BMHD será 0. [ 4 ]

Imágenes profundas

Algunos archivos ILBM contienen información de "color verdadero" en lugar de colores indexados. Estos archivos, denominados "imágenes profundas", no tienen fragmento CMAP y suelen tener 24 o 32 planos de bits. El orden estándar para los planos de bits coloca primero el bit menos significativo del componente rojo: [ 4 ]

R0 R1 R2 R3 R4 R5 R6 R7 G0 G1 G2 G3 G4 G5 G6 G7 B0 B1 B2 B3 B4 B5 B6 B7

Si hay planos de 32 bits, los últimos 8 planos de bits serán un canal alfa:

R0 R1 ... R7 G0 ... G7 B0 ... B6 B7 A0 A1 A2 A3 A4 A5 A6 A7

Una imagen que no contiene mapa de color y solo tiene 8 planos de bits puede ser una imagen en escala de grises :

I0 I1 I2 I3 I4 I5 I6 I7

Extra Half-Brite

Si el archivo ILBM contiene un fragmento CAMG en el que el bit 7 está activado (es decir, 0x80 en hexadecimal), se espera que utilice el modo EHB (Extra Half-Brite) del chipset Amiga. El mapa de color tendrá un máximo de 32 entradas, pero la imagen tendrá 6 planos de bits. El plano de bits más significativo debe considerarse un indicador; cuando no está activado, se utilizan los 5 bits inferiores como índice del mapa de color, como de costumbre. Cuando el indicador está activado, se utilizan los 5 bits inferiores como índice del mapa de color, pero el color real que se va a utilizar debe tener la mitad de brillo, lo que se puede conseguir desplazando los componentes RGB del color un bit a la derecha. Como alternativa, se puede crear un mapa de color con 64 entradas y copiar las 32 entradas inferiores en la mitad superior, convirtiéndolas a la mitad de brillo; luego, se utilizan los 6 planos de bits como índice de color. [ 4 ]

Las imágenes PBM no pueden existir en modo de brillo medio adicional.

Mantener y modificar

Si el archivo ILBM contiene un bloque CAMG en el que el bit 11 está activado (es decir, 0x800 en hexadecimal), el archivo espera utilizar el modo HAM (mantener y modificar) del chipset Amiga. En el formato HAM6, el mapa de colores tendrá hasta 16 entradas, pero la imagen tendrá 6 (o posiblemente 5 planos de bits). En el formato HAM8, el mapa de colores tendrá hasta 64 entradas, pero la imagen tendrá 8 (o posiblemente 7 planos de bits). [ 4 ]

Los dos últimos planos de bits (si hay un número impar de planos de bits, se asume un plano de bits adicional que siempre es 0) son indicadores de control que señalan cómo usar los primeros 4 (o 6) planos de bits. [ 4 ]

Si el primer píxel de una línea de escaneo es un píxel de modificación, entonces modifique y use el color del borde de la imagen. [ 4 ]

Tenga en cuenta que al usar 4 bits para modificar un componente de color, debe usar los 4 bits superiores del componente Y los 4 bits inferiores (para evitar reducir la gama de colores general). Al usar 6 bits, esto es menos importante, pero aún puede colocar los 2 bits más significativos de los bits de modificación en los dos bits menos significativos del componente de color. [ 4 ]

Las imágenes PBM no pueden existir en modo de retención y modificación.

Servicios públicos

La mayoría de las utilidades que trabajan con archivos ILBM y PBM están bastante desactualizadas, como MacPaint o Deluxe Paint . IrfanView permite visualizar archivos, es gratuito para uso no comercial y puede funcionar en Linux. Netpbm puede convertir imágenes de ILBM a su propio formato PPM [ 5 ] y viceversa. [ 6 ] El editor de gráficos de pixel art GrafX2, inspirado en Deluxe Paint, puede cargar y guardar archivos ILBM, pero está limitado a un máximo de 256 colores, por lo que las imágenes HAM o ILBM de 24 bits no mostrarán todos los colores. ImageMagick y GraphicsMagick también pueden visualizar y convertir imágenes ILBM si se instalan las utilidades ilbmtoppm y ppmtoilbm de Netpbm.

Véase también

Referencias

  1. Jerry Morrison (14 de enero de 1985). "EA IFF 85: Estándar para archivos de formato de intercambio" . Electronic Arts . Consultado el 6 de marzo de 2014 .
  2. Jerry Morrison (17 de enero de 1986) ."ILBM" IFF Interleaved Bitmap" . Electronic Arts . Archivado del original el 13 de junio de 2014. Recuperado el 6 de marzo de 2014 .
  3. James D. Murray; William vanRyper (abril de 1996). Enciclopedia de formatos de archivos gráficos, segunda edición . O'Reilly . ISBN 1-56592-161-5. Consultado el 27 de febrero de 2014 .
  4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 "ILBM IFF Interleaved Bitmap" . 8 de junio de 2012. Recuperado el 30 de julio de 2018 .
  5. Jef Poskanzer; Ingo Wilken (12 de noviembre de 2014). "ilbmtoppm" . Consultado el 13 de junio de 2019 .
  6. Jef Poskanzer; Ingo Wilken (28 de junio de 2015). "ppmtoilbm" . Consultado el 13 de junio de 2019 .
  • PNG2ILBM convierte archivos PNG a formato ILBM y ACBM. Puede convertir cualquier PNG, incluyendo aquellos con canal alfa y/o profundidad de 16 bits por canal. Admite remuestreo, cuantización, tramado, preservación o anulación del registro de color en cualquier plano de bits del 1 al 8, incluyendo Extra-HalfBrite y Hold And Modify.
  • Graphics Workshop 1.1Y, de mediados de los 90, puede convertir archivos ILBM a y desde todas las variantes; además, admite diversos formatos de archivo de imagen. Aunque es un programa antiguo, sigue funcionando incluso en Windows 10 en modo de compatibilidad con Windows XP. Existe también una versión comercial más reciente, Graphics Workshop Professional, con una interfaz de usuario mucho más moderna (que parece ser de mediados de la década de 2000), pero que, sin embargo, también está desfasada según los estándares actuales.
  • Ultimate Paint puede leer, escribir y mostrar animaciones del ciclo de colores de la paleta.
  • nconvert de XnView es un convertidor de línea de comandos gratuito y actualizado.
  • Image Converter Plus es un programa que convierte archivos ILBM a diversos formatos. Si bien la versión completa no es gratuita, la versión de demostración incluye una marca de agua que se puede eliminar.
  • Paint Shop Pro 7.04 y otras versiones anteriores de PSP pueden leer y escribir archivos ILBM, pero solo pueden leer archivos PBM. Cabe mencionar especialmente a PSP7, ya que la versión shareware tiene un error que permite omitir el mecanismo de cierre de evaluación simplemente abriendo un archivo (es decir, modifica el acceso directo para que siempre abra un archivo y así evitarás este problema).