X PixMap - X PixMap

X PixMap
Captura de pantalla-xterm-linux.xpm-GVIM.png
Algunos editores de texto , por ejemplo gvim , pueden mostrar imágenes xpm en forma gráfica.
Extensión de nombre de archivo
.xpm
Tipo de medio de Internet
imagen / x-xpixmap
Desarrollado por Investigación BULL
Tipo de formato Formatos de archivo de imagen
Extendido desde XBM
¿ Formato abierto ?

X PixMap ( XPM ) es un formato de archivo de imagen utilizado por X Window System , creado en 1989 por Daniel Dardailler y Colas Nahaboo que trabajaban en Bull Research Center en Sophia Antipolis , Francia, y luego mejorado por Arnaud Le Hors.

Está diseñado principalmente para crear mapas de píxeles de iconos y admite píxeles transparentes . Derivado de la sintaxis XBM anterior , es un archivo de texto sin formato en formato XPM2 o de una sintaxis de lenguaje de programación C , que se puede incluir en un archivo de programa C.

Historia

XPM1

El primer formato XPM (1989) es relativamente similar al formato XBM. En comparación con XBM, utiliza definiciones de macros adicionales y variables para colores indexados y reemplaza bits con caracteres para describir la imagen. La siguiente es una imagen en blanco y negro en formato XPM de 1989.

#define XFACE_format 1
#define XFACE_width 48
#define XFACE_height 48
#define XFACE_ncolors 2
#define XFACE_chars_per_pixel 1
static char *XFACE_colors[] = {
"a", "#ffffff",
"b", "#000000"
};
static char *XFACE_pixels[] = {
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
// and so on for 48 rows with 48 pixels

XPM2

XPM2 (1990) simplifica el formato eliminando todo el código C. La estructura se simplifica a

! XPM2
<Values>
<Colors>
<Pixels>
<Optional Extensions>
  • La sección de valor describe la dimensión general de la imagen similar a las #definedeclaraciones.
  • La sección de color define los valores y un nuevo concepto del "tipo" del color. Los tipos pueden ser c para "color", m para salida "monocromática", g para "escala de grises" y s para "simbólico", lo que explica lo que se supone que debe hacer un color definido.
  • Los píxeles y las extensiones opcionales permanecen como en el formato original.

El archivo anterior, con ancho 48, alto 4, 2 colores y 1 carácter por píxel, se convierte en:

! XPM2
48 4 2 1
a c #FFFFFF
b c #000000
abaabaababaaabaabababaabaabaababaabaaababaabaaab
abaabaababaaabaabababaabaabaababaabaaababaabaaab
abaabaababaaabaabababaabaabaababaabaaababaabaaab
abaabaababaaabaabababaabaabaababaabaaababaabaaab

Colores

Además de los códigos hexadecimales, los colores pueden ser cualquiera de los nombres de color X11 . Además, Noneindica transparencia.

La función "simbólica" permite ajustar los colores según el contexto en el que se utilizan. Código que s border c bluepodría ajustarse sobre un fondo azul.

Codificación de muchos colores

Una herramienta se conoce el uso de solamente una a p durante 16 colores, el cambio a AA hasta dp de 64 colores, pero aún así la lectura de la codificación de caracteres individuales de 64 colores; comparar Base64 .

Con más colores, los códigos utilizan más caracteres, por ejemplo, aa hasta pp para 16 × 16 = 256 colores. Esto es menos útil para los editores de texto, porque una cadena ab podría ser en realidad el medio de dos píxeles adyacentes dabc . Se permiten espacios como código de color, pero puede ser una mala idea dependiendo del editor de texto utilizado. Sin códigos de control, barra invertida y comillas (necesario en XPM1 y XPM3) 128 - 33 - 2 = 93 caracteres ASCII están disponibles para códigos de color de un solo carácter.

Ejemplo simplificado: se pueden organizar 90 caracteres US-ASCII en nueve conjuntos de 10 caracteres que no se superponen. Por lo tanto, cadenas inequívocas de nueve caracteres podrían establecer el color de cada píxel por su índice de paleta XPM con hasta 10 9 =1 000 000 000 de colores (en comparación con GIF , que solo admite 256).

Para XPM2, está claro cuántas líneas pertenecen a la imagen: dos líneas de encabezado, la segunda línea de encabezado anuncia el número de códigos de color (2 líneas en el ejemplo anterior) y filas (altura 4 en el ejemplo anterior), por ejemplo, 2 + 2 + 4 = 8 líneas.

XPM3

El formato actual y último es XPM3 (1991). Vuelve a introducir el contenedor C, pero en lugar de mostrar explícitamente la estructura de un archivo, las cadenas almacenadas son esencialmente idénticas a XPM2.

/* XPM */
static char * XFACE[] = {
"48 4 2 1",
"a c #ffffff",
"b c #000000",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab"
};

Si la línea de "valores" contiene seis en lugar de cuatro números, los valores adicionales indican las coordenadas de un "punto de acceso", donde 0 0 es la esquina superior izquierda de un cuadro que contiene el icono y el valor predeterminado. Un "punto de acceso" se utiliza para los punteros del mouse y aplicaciones similares.

Comparación con otros formatos

Archivo blarg abierto en la ventana del programa

El siguiente código muestra el mismo archivo blarg en los formatos XBM , XPM y PBM .

Versión XBM:

#define test_width 16
#define test_height 7
static char test_bits[] = {
0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80,
0x00, 0x60 };
Blarg.xpm (XPM2) representado por XnView

Versión XPM2:

! XPM2
16 7 2 1
* c #000000
. c #ffffff
**..*...........
*.*.*...........
**..*..**.**..**
*.*.*.*.*.*..*.*
**..*..**.*...**
...............*
.............**.

Versión XPM3:

/* XPM */
static char * blarg_xpm[] = {
"16 7 2 1",
"* c #000000",
". c #ffffff",
"**..*...........",
"*.*.*...........",
"**..*..**.**..**",
"*.*.*.*.*.*..*.*",
"**..*..**.*...**",
"...............*",
".............**."
};

Archivo PBM:

P1
16 7
1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1
1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1
1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

Soporte de aplicaciones

ACDSee , Amaya , CorelDRAW , GIMP , ImageMagick , IrfanView (plugin de formatos), PaintShop Pro , PMView , Photoshop (plugins) y XnView, entre otros, son compatibles con XPM. Gravatar y picons también son compatibles con XPM.

En 2005 se solucionó una vulnerabilidad libXpm de X11 . FFmpeg versión 3.3 o posterior puede decodificar XPM.

Notas

Referencias

Ver también