PCX

Ajustar Compartir Imprimir Citar
Formato de archivo de imagen

PCX, que significa PiCture eXchange, era un formato de archivo de imagen desarrollado por la ahora desaparecida ZSoft Corporation de Marietta, Georgia, Estados Unidos. Era el formato de archivo nativo para PC Paintbrush y se convirtió en uno de los primeros estándares de imágenes de DOS ampliamente aceptados, aunque desde entonces ha sido reemplazado por formatos de imagen más sofisticados, como BMP, JPEG y PNG. Los archivos PCX comúnmente almacenan imágenes indexadas por paleta que van desde 2 o 4 colores hasta 16 y 256 colores, aunque el formato se ha ampliado para registrar también imágenes en color verdadero (24 bits).

Formatos de imagen PCX

Cuadro A. PCX común Formatos de imagen
ProfundidadPlanesNúmero de colores
4116 colores de una paleta
81256 colores de una paleta
81256 tonos de gris
444096 colores con 16 niveles de transparencia
8316,7 millones, 24 bits "color verdadero"
8416,7 millones con 256 niveles de transparencia
112 colores monocromo (1-Bit) (Win 3.1 Pincel de pintura)
1416 colores RGBi (4-Bit) en 4 planos (Win 3.1 Pincel de pintura)

PCX se diseñó durante el desarrollo inicial del hardware de visualización de PC y la mayoría de los formatos compatibles ya no se utilizan. La Tabla A muestra una lista de los formatos PCX más utilizados. Es posible que los programas de edición de imágenes contemporáneos no lean archivos PCX que coincidan con hardware antiguo.

PCX es compatible con software de procesamiento de imágenes comunes, incluidos ACDSee, GIMP, ImageMagick, IrfanView, LView, Netpbm, PaintShop Pro, Photoshop, Visio, PMview, XnView y GraphicConverter. En la versión 2.1.4, FFmpeg podía codificar y decodificar los formatos de píxeles PCX rgb24, rgb8, bgr8, rgb4_byte, bgr4_byte, gray, pal8, y monob.

Existe una versión de varias páginas de PCX, utilizada por algunos programas informáticos de gestión de documentos y fax, con la extensión de archivo .dcx. Un archivo DCX consta de un encabezado que presenta un conjunto de archivos PCX siguientes.

Formato de archivo PCX

Los archivos PCX se diseñaron para su uso en PC compatibles con IBM y siempre utilizan el ordenamiento de bytes little endian. Un archivo PCX tiene tres secciones principales, en el siguiente orden

  1. 128-byte header
  2. datos de imagen
  3. (opcional) Paleta de 256 colores

El encabezado del archivo PCX contiene un byte de identificación (valor 10), un número de versión, dimensiones de la imagen, 16 colores de paleta, números de planos de color, profundidad de bits de cada plano y un valor para el método de compresión. Los números de versión de PCX van del 0 al 5, esto originalmente denotaba la versión del programa PC Paintbrush utilizado para crear el archivo PCX. El encabezado siempre tiene espacio para 16 colores, aunque el número de colores utilizados depende de la profundidad de bits de la imagen. El encabezado se compone de 18 campos:

Hex Offset dec Tamaño Propósito
000 1 byte El campo de cabecera fijo valorado en un hexadecimal 0x0A (= 10 en decimal).
011 1 byte El número de versión que se refiere a la versión del software Paintbrush, que podría ser:
0
PC Paintbrush versión 2.5 usando una paleta EGA fija
2
PC Paintbrush versión 2.8 utilizando una paleta EGA modificable
3
PC Paintbrush versión 2.8 sin paleta
4
Pincel PC para Windows
5
PC Paintbrush versión 3.0, incluyendo imágenes de 24 bits
022 1 byte El método utilizado para la codificación de los datos de imagen. Puede ser:
0
No hay codificación (de uso general)
1
Codificación de longitud de carrera (RLE)
033 1 byte El número de bits que constituyen un avión. A menudo 1, 2, 4 o 8.
044 2 bytes El mínimo x coordinado de la posición de la imagen.
066 2 bytes El mínimo y coordinado de la posición de la imagen.
088 2 bytes El máximo x coordinado de la posición de la imagen.
0A10 2 bytes El máximo y coordinado de la posición de la imagen.
0C12 2 bytes La resolución horizontal de la imagen en DPI.
0E14 2 bytes La resolución de imagen vertical en DPI.
1016 48 bytes La paleta EGA para imágenes de 16 colores.
4064 1 byte El primer campo reservado, normalmente fijado a cero.
4165 1 byte El número de planos de color que constituyen los datos del píxel. La mayoría elegido para ser 1, 3, o 4.
4266 2 bytes El número de bytes de un avión de color que representa una sola línea de exploración.
4468 2 bytes El modo en que interpretar la paleta:
1
La paleta contiene monocromo o información de color
2
La paleta contiene información grayscale
4670 2 bytes La resolución horizontal de la pantalla del sistema fuente.
4872 2 bytes La resolución vertical de la pantalla del sistema fuente.
4A74 54 bytes El segundo campo reservado, destinado a futuras extensiones, y normalmente fijado a cero bytes.

Todos los archivos PCX usan el mismo esquema de compresión y el valor de compresión siempre es 1. No se han definido otros valores y no hay archivos PCX sin comprimir. Una fuente afirma que 0 (sin comprimir) está permitido, pero no hay mucho software que lo admita.

Diseño de datos de imagen

Cuadro B. PCX Datos de imagen ordenados en planos de color
Fila 0 R R R R R R R R R R R R R R
G G G G G G
B B B B B B B B
A A A A A A A A A
Fila 1 R R R R R R R R R R R R R R
G G G G G G
B B B B B B B B
A A A A A A A A A
Fila 2 etc....

Los datos de imagen PCX se almacenan en filas o líneas de escaneo en orden de arriba hacia abajo. Si la imagen tiene múltiples planos, estos se almacenan por plano dentro de la fila, de modo que todos los datos rojos para la fila 0 son seguidos por todos los datos verdes para la fila 0, luego todos los datos azules y luego los datos alfa. Este patrón se repite para cada línea como se muestra en la Tabla B.

Cuando una imagen tiene menos de 8 bits por píxel, cada línea se rellena con el siguiente límite de byte par. Por ejemplo, si una imagen tiene 1 plano de datos de 1 bit (monocromo) con un ancho de 22 píxeles, cada fila tendrá 4 bytes de largo, con 32 bits por fila con 10 bits sin usar.

Compresión de datos de imagen

Los datos de imágenes PCX se comprimen mediante la codificación de longitud de ejecución (RLE), un algoritmo de compresión simple sin pérdidas que contrae una serie de tres o más bytes consecutivos con valores idénticos en un par de dos bytes. Los dos bits más significativos de un byte se utilizan para determinar si los datos dados representan un solo píxel de un índice de paleta o valor de color dado, o un par RLE que representa una serie de varios píxeles de un solo valor:

  1. si ambos bits son 1, el byte se interpreta como la longitud de ejecución. Esto deja 6 bits para el valor de longitud de ejecución real, es decir, un rango de valor de 0-63
  2. en cualquier otro caso, el byte se interpreta como un único valor pixel. Esto deja todo el valor para el que bit #7 y bit #8 no son 1 al mismo tiempo. Este requisito no se cumple con todos los valores de 192 (11000000 binarios) y superiores.

En comparación con la longitud de ejecución máxima de 128, posible con la compresión TGA RLE, la codificación de longitud de ejecución PCX ofrece un mayor rango de valores de un solo píxel, mientras que la longitud de ejecución máxima está restringida a 63.

Debido al uso de los dos bits más significativos como indicadores, los valores de píxel de 192 a 255 (con su bit más significativo ya configurado) deben almacenarse en un par de bytes RLE, incluso cuando solo ocurren uno o dos. píxeles en sucesión, mientras que los índices de color de 0 a 191 se pueden almacenar directamente o en pares de bytes RLE (lo que sea más eficiente en cuanto al espacio); por lo tanto, la relación de compresión real podría optimizarse con la clasificación adecuada de las entradas de la paleta, aunque esto no es factible cuando el archivo debe compartir su paleta de colores con otras imágenes. Por ejemplo, una paleta podría optimizarse con los colores más utilizados en las posiciones de paleta 0 a 191 y los colores menos comunes asignados a la cuarta parte restante de la paleta.

Otra ineficiencia del algoritmo RLE es que es posible almacenar fragmentos con una longitud de 0, lo que permite espacios en blanco en el archivo. Esto permitió que los archivos PCX se descomprimieran un poco más rápido en los procesadores para los que estaban destinados originalmente. Esta peculiaridad podría usarse para la esteganografía.

El algoritmo de compresión PCX requiere muy poca potencia de procesador o memoria para aplicarse, una preocupación importante con los sistemas informáticos cuando se diseñó. A medida que las computadoras y el hardware de visualización se vuelven más sofisticados, el algoritmo PCX se vuelve menos eficiente en el uso del espacio. Los algoritmos de compresión utilizados por los formatos de imagen más nuevos son más eficientes cuando se comprimen imágenes como fotografías y gráficos difuminados o complejos.

Paleta de colores

Un archivo PCX tiene espacio en su encabezado para una paleta de 16 colores. Cuando el hardware VGA de 256 colores estuvo disponible, no había suficiente espacio para la paleta en un archivo PCX; incluso los 54 bytes no utilizados después del encabezado no serían suficientes. La solución elegida fue poner la paleta al final del archivo, junto con un byte marcador para confirmar su existencia.

Si un archivo PCX tiene una paleta de 256 colores, se encuentra a 768 bytes del final del archivo. En este caso, el valor del byte que precede a la paleta debe ser 12 (0x0C). La paleta se almacena como una secuencia de triples RGB; su longitud utilizable se define por el número de colores de la imagen. Los valores de colores en una paleta PCX siempre usan 8 bits, independientemente de la profundidad de bits de la imagen.