El formato PCX fué creado por ZSoft hace ya muchos años y fué el formato gráfico del célebre PintBrush bajo MS_DOS y Windows en los años 80 y que ahora está casi en desuso.
Las imágenes guardadas en formato PCX no pierden calidad y van comprimidas. Todo fichero PCX tiene una cabecera estándar de 128 Bytes en la que guarda la paleta de colores de la imagen si ésta es de 16 colores, es decir tipo 4 bits por pixel. Si es mayor se guarda al final del archivo y en los casos de 24 o mas bits por pixel, la paleta no existe.
El formato de compresión es RLE (Run Lenght Encode) El algoritmo de compresión es sencillo, se basa en comprimir los pixels repetidos. Para almacenar una repetición se antepone un Byte especial en el que los 2 bits de mayor peso son 1 y los 6 bits restantes representan el número de repeticiones, que como máximo es 63. Si el pixel no es repetido los dos bits de mayor peso no son 1. De esta forma el valor máximo sería 191 (10111111), para representar valores mas altos se hace como si fuera un pixel repetido una vez. De esta forma se colocaría un Byte de compresión con valor 193 (11000001) y detrás el pixel correspondiente.
Entonces para valores de pixel mayores de 191 no habría compresión sino expansión, siendo este uno de los fallos del formato. Para imágenes de pocos colores y planos, se muestra muy eficaz.
En los casos de imágenes de 24 bits por pixel, de tratan como si fueran de 8 pero sin considerar paleta pues este formato no la precisa (los pixels representan tripletes RGB). En este tipo de imágenes el rendimiento no suele ser bueno.
Muestro una clase simple capaz de comprimir una imagen, descomprimirla y detectar una cabecera válida. Dicha clase tieve un miembro del tipo TBitmap que será el encargado de compatibilizarla con la VCL.
La clase esta escrita en C++ y delphi.
Posiblemente sirva para recuperar algunos viejos archivos.pcx o ampliar las capacidades gráficas de alguna de nuestras aplicaciones.
Saludos.
Formato de imagen PCX
Comenzado por
escafandra
, ene 14 2010 02:03
2 respuestas en este tema
#1
Escrito 14 enero 2010 - 02:03
#2
Escrito 14 enero 2010 - 03:00
Amigo muchas gracias por el aporte, ¡Genial!
#3
Escrito 14 enero 2010 - 04:00
Muy bueno.