stringtranslate.com

X PixMap

X PixMap ( XPM ) es un formato de archivo de imagen utilizado por el sistema X Window , creado en 1989 por Daniel Dardailler y Colas Nahaboo que trabajaban en el Centro de Investigación Bull en Sophia Antipolis , Francia, y posteriormente mejorado por Arnaud Le Hors. [2] [3]

Está pensado 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 del lenguaje de programación C , que se puede incluir en un archivo de programa C. [2]

Historia

XPM1

El primer formato XPM (1989) es relativamente similar al formato XBM. [a] En comparación con XBM, utiliza definiciones de macros y variables adicionales 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 carácter estático * XFACE_colors [] = { "a" , "#ffffff" , "b" , "#000000" }; static char * XFACE_pixels [] = { "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , // y así sucesivamente durante 48 filas con 48 píxeles          

XPM2

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

! XPM2<Valores><Colores><píxeles><Extensiones opcionales>

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

! XPM248 4 2 1ac #FFFFFFantes de Cristo #000000abaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaab

Colores

Además de los códigos hexadecimales, los colores pueden ser cualquiera de los nombres de colores X11 . Además, Noneindica transparencia. [4] [5]

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

Codificación de muchos colores

Se sabe que una herramienta utiliza sólo a hasta p para 16 colores, cambiando a aa hasta dp para 64 colores, pero sigue leyendo codificaciones de un solo carácter para 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 ni comillas (necesarias 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: 90 caracteres US-ASCII podrían organizarse en nueve conjuntos de 10 caracteres que no se superpongan. Así, cadenas inequívocas de nueve caracteres podrían establecer el color de cada píxel mediante su índice de paleta XPM con hasta 10 9 =1.000.000.000 de colores (en comparación con GIF , que sólo 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" , "ac #ffffff" , "bc #000000" , "abaabaababaaabaabababaabaabaabaaababaabaaab" , "abaabaababaaabaababaabaabaabaabaabaaababaabaaab" , "abaabaababaaabaababaabaabaabaabaaababaaab" , abaabaababaaabaabababaabaabaababaabaaababaabaaab" };     

Si la línea de "valores" contiene seis números en lugar de cuatro, 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. Se utiliza un "punto de acceso" 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 , 60 };                 
Blarg.xpm (XPM2) renderizado por XnView

Versión XPM2:

! XPM216 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:

P116 71 1 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 1 0 1 0 0 0 0 0 0 0 0 0 0 01 1 0 0 1 0 0 1 1 0 1 1 0 0 1 11 0 1 0 1 0 1 0 1 0 1 0 0 1 0 11 1 0 0 1 0 0 1 1 0 1 0 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

Soporte de aplicaciones

ACDSee , Amaya , CorelDRAW , GIMP , ImageMagick , IrfanView (complemento de formatos), PaintShop Pro , PMView , Photoshop (complementos) y XnView , entre otros, son compatibles con XPM. [6] [7] Gravatar y picons también son compatibles con XPM. [8] [9]

Una vulnerabilidad X11 libXpm se solucionó en 2005, [10] y tres más en 2023. [11]

FFmpeg versión 3.3 o posterior puede decodificar XPM. [12]

Ver también

Notas

  1. ^ Para obtener una descripción de este formato en lugar del manual (que no se encuentra en Internet), utilice el código fuente del convertidor xpm-contrib (anteriormente parte de libXpm propiamente dicho) (xpm2ppm, xpm1to3, xpm1to2c).
  2. ^ También es aceptable utilizar sintaxis de lenguajes de programación para matrices de cadenas, pero solo se certifica la sintaxis C. La sintaxis "XPM2 C" finalmente se convirtió en el único formato en la versión 3 de XPM.
  3. ^ Para obtener referencias sobre esta sintaxis, consulte https://gitlab.freedesktop.org/xorg/lib/libxpm/-/blob/master/NEWS.old y la sección "historial" del manual de libXpm 3.4.

Referencias

  1. ^ Tipo MIME .xpm no registrado en IANA
  2. ^ ab Le Hors, Arnaud (1 de febrero de 1996). Manual de XPM: El formato X PixMap (PDF) . Grupo Toro . págs. 7–8 . Consultado el 1 de enero de 2014 .
  3. ^ Daniel Dardailler (15 de julio de 1996). "La historia de XPM". Colas Nahaboo y Arnaud Le Hors. Archivado desde el original el 7 de junio de 1997 . Consultado el 1 de enero de 2014 .
  4. ^ "Preguntas frecuentes sobre XPM". Fundación X.Org . 1996 . Consultado el 12 de marzo de 2016 .
  5. ^ Murray, James D.; Vanryper, William (1996). Resumen del formato de archivo XPM . O'Reilly y asociados. ISBN 1-56592-161-5. Consultado el 1 de enero de 2014 . {{cite book}}: |work=ignorado ( ayuda )
  6. ^ Nir Sofer. "Extensión .xpm" . Consultado el 12 de enero de 2014 .
  7. ^ "Tipo de archivo: X Windows Pixmap". Asociación de archivos de Windows . Microsoft . 2013 . Consultado el 12 de enero de 2014 .
  8. ^ Gravatar no oficial, sin XPM2
  9. ^ Steve Kinzler (2005). «Archivo Picones» . Consultado el 6 de enero de 2014 . Los picons están en formato XBM monocromático o en formato XPM y GIF en color.
  10. ^ "La biblioteca libXpm contiene múltiples vulnerabilidades de desbordamiento de enteros". CERT de EE. UU . 2005-10-06. VU#537878 . Consultado el 1 de enero de 2014 .
  11. ^ "Aviso de seguridad de X.Org: problemas con el manejo de archivos XPM en libXpm antes del 3.5.15". 2023-01-17.
  12. ^ "FFmpeg 3.3" Hilbert"". FFmpeg . 2017-04-13 . Consultado el 28 de octubre de 2017 . decodificador XPM

Ver también

enlaces externos