stringtranslate.com

ICO (formato de archivo)

El formato de archivo ICO es un formato de archivo de imagen para iconos de ordenador en Microsoft Windows . Los archivos ICO contienen una o más imágenes pequeñas de distintos tamaños y profundidades de color , de modo que se puedan escalar de forma adecuada. En Windows, todos los archivos ejecutables que muestran un icono al usuario, ya sea en el escritorio, en el menú Inicio o en el Explorador de archivos, deben llevar el icono en formato ICO.

El formato de archivo CUR es un formato de archivo de imagen casi idéntico para cursores no animados en Microsoft Windows. Las únicas diferencias entre estos dos formatos de archivo son los bytes que se utilizan para identificarlos y la adición de un punto de acceso en el encabezado del formato CUR; el punto de acceso se define como el desplazamiento de píxeles (en coordenadas x,y) desde la esquina superior izquierda de la imagen del cursor hacia donde el usuario está apuntando el mouse. [ cita requerida ]

El formato de archivo ANI se utiliza para cursores animados de Windows .

Historia

Los iconos introducidos en Windows 1.0 tenían un tamaño de 32×32 píxeles y eran monocromáticos. [2] La compatibilidad con 16 colores se introdujo en Windows 3.0 . [ cita requerida ]

Win32 introdujo soporte para almacenar imágenes de iconos de hasta 16,7 millones de colores (TrueColor) y hasta 256×256 píxeles en dimensiones. [3] Windows 95 también introdujo un nuevo motor de mapa de bits independiente del dispositivo (DIB). [4] Sin embargo, 256 colores era la profundidad de color de los iconos predeterminada en Windows 95. Era posible habilitar iconos de 65535 colores (Highcolor) modificando el valor Shell Icon BPP en el registro [3] [5] o comprando Microsoft Plus! para Windows 95. El valor Shell Icon Size permite utilizar iconos más grandes en lugar de iconos de 32×32 y el valor Shell Small Icon Size permite utilizar tamaños personalizados en lugar de iconos de 16×16. [3] Por lo tanto, un único archivo de iconos podía almacenar imágenes de cualquier tamaño, desde 1 × 1 píxel hasta 256 × 256 píxeles (incluidos tamaños no cuadrados) con 2 (rara vez utilizados), 16, 256, 65535 o 16,7 millones de colores; pero el shell no podía mostrar iconos de tamaño muy grande. El área de notificación de la barra de tareas de Windows estaba limitada a 16 iconos de color de forma predeterminada hasta Windows Me, cuando se actualizó para admitir iconos de color de alta definición.

Windows XP agregó soporte para imágenes de iconos de color de 32 bits (16,7 millones de colores más transparencia de canal alfa de 8 bits ), lo que permite dibujar áreas semitransparentes como sombras , suavizado y efectos similares al vidrio en un icono. Windows XP, de forma predeterminada, emplea iconos de 48 × 48 píxeles en el Explorador de Windows . Se puede obligar a Windows XP a utilizar iconos de hasta 256 × 256 modificando el valor de tamaño de icono de Shell , pero esto haría que todos los iconos de 32 × 32 en todo el shell se amplíen. [3] Microsoft solo recomendó tamaños de iconos de hasta 48 × 48 píxeles para Windows XP. [6] Windows XP puede reducir el tamaño de los iconos más grandes si no hay disponible un tamaño de imagen más cercano. [3]

Windows Vista agregó soporte completo para iconos de color de 32 bits y 256 × 256 píxeles , [Notas 1] así como soporte para el formato comprimido PNG . Aunque la compresión no es obligatoria, Microsoft recomienda que todos los iconos de color de 32 bits y 256 × 256 píxeles en archivos ICO se almacenen en formato PNG para reducir el tamaño general del archivo. El Explorador de Windows Vista admite la escalabilidad suave de los iconos a tamaños no estándar que se representan sobre la marcha incluso si no hay una imagen presente para ese tamaño en el archivo de icono. El shell de Windows Vista agrega un control deslizante para "acercar" y alejar el tamaño de los iconos. Con usuarios que usan resoluciones más altas y modos de DPI altos, se recomiendan formatos de iconos más grandes (como 256 × 256). [7] [8]

Tipo MIME

Si bien el tipo MIME registrado por la IANA para los archivos ICO es , [9] fue enviado a la IANA en 2003 por un tercero y no es reconocido por el software de Microsoft, que utiliza o en su lugar. [10] [11] También se han visto en uso los tipos erróneos , , y . [9]image/vnd.microsoft.iconimage/x-iconimage/icoimage/icoimage/icontext/icoapplication/ico

Estructura del archivo de iconos

Un archivo ICO o CUR se compone de una estructura ICONDIR ("Directorio de iconos"), que contiene una estructura ICONDIRENTRY para cada imagen del archivo, seguida de un bloque contiguo de todos los datos de mapa de bits de la imagen (que pueden estar en formato BMP de Windows , excluyendo la estructura BITMAPFILEHEADER, o en formato PNG , almacenados en su totalidad). [3]

Las imágenes con menos de 32 bits de profundidad de color siguen un formato particular: la imagen se codifica como una sola imagen que consta de una máscara de color (la "máscara XOR") junto con una máscara de opacidad (la "máscara AND"). [6] [3] La máscara XOR debe preceder a la máscara AND dentro de los datos de mapa de bits; si la imagen se almacena en orden de abajo a arriba (que es lo más probable), la máscara XOR se dibujaría debajo de la máscara AND. La máscara AND es de 1 bit por píxel, independientemente de la profundidad de color especificada por el encabezado BMP, y especifica qué píxeles son completamente transparentes (1) y cuáles son completamente opacos (0). La máscara XOR se ajusta a la profundidad de bits especificada en el encabezado BMP y especifica el color numérico o el valor de paleta para cada píxel. Juntas, la máscara AND y la máscara XOR forman una imagen no transparente que representa una imagen con una transparencia de 1 bit; también permiten la inversión del fondo. La altura de la imagen en la estructura ICONDIRENTRY del archivo ICO/CUR toma la de las dimensiones de la imagen prevista (después de que se hayan compuesto las máscaras), mientras que la altura en el encabezado BMP toma la de las dos imágenes de máscara combinadas (antes de que se hayan compuesto). Por lo tanto, las máscaras deben tener las mismas dimensiones y la altura especificada en el encabezado BMP debe ser exactamente el doble de la altura especificada en la estructura ICONDIRENTRY. [12]

Las imágenes de 32 bits (incluidas las imágenes BMP de 32 bits con formato BITMAPINFOHEADER [Notas 2] ) son específicamente imágenes de 24 bits con la adición de un canal de 8 bits para la composición alfa . Por lo tanto, en imágenes de 32 bits, la máscara AND no es necesaria, pero se recomienda tenerla en cuenta. Windows XP y versiones posteriores utilizarán una imagen de 32 bits en un modo de color inferior al verdadero construyendo una máscara AND basada en el canal alfa (si no reside ya una con la imagen) si no se proporciona una versión de 24 bits de la imagen en el archivo ICO/CUR. Sin embargo, las versiones anteriores de Windows interpretan todos los píxeles con una opacidad del 100% a menos que se proporcione una máscara AND con la imagen. Proporcionar una máscara AND personalizada también permitirá que el autor del icono realice ajustes y sugerencias. Incluso si no se proporciona la máscara AND, si la imagen está en formato BMP de Windows, el encabezado BMP debe especificar una altura duplicada.

Es importante tener en cuenta que en la máscara AND, al igual que en la matriz de píxeles del mapa de bits , se deben agregar bytes de relleno al final de cada fila para aumentar su longitud a un múltiplo de cuatro bytes, ya que es básicamente un mapa de bits (monocromático). [3] La máscara AND de un mapa de bits de 8x8 píxeles tendría 1 byte de datos y 3 bytes de relleno (8*8*1bpp = 64 bits/8 = 8 bytes de filas totales, por lo que cada fila es 1 byte y se necesitan 3 bytes de relleno), la máscara AND de un mapa de bits de 16x16 tendría 2 bytes de datos y 2 bytes de relleno, la máscara AND de un mapa de bits de 32x32 tendría 4 bytes de datos y ningún relleno. Tenga en cuenta que la cantidad de bytes de relleno necesarios depende de las dimensiones del mapa de bits y no de su profundidad de color, ya que la máscara AND es de 1 bit por píxel independientemente.

Describir

Todos los valores en los archivos ICO/CUR están representados en orden de bytes little-endian .

Estructura del directorio de imágenes

Datos de imagen referenciados

Todos los datos de imágenes a los que hacen referencia las entradas del directorio de imágenes se almacenan directamente después del directorio de imágenes. Es una práctica habitual almacenarlos en el mismo orden definido en el directorio de imágenes.

Formato BMP

Si una imagen se almacena en formato BMP, debe excluir la estructura de apertura BITMAPFILEHEADER .

La altura de la imagen BMP debe ser el doble de la altura declarada en el directorio de imágenes. Esto se debe a que los datos de la imagen real contendrán dos partes: la imagen real seguida inmediatamente por una máscara de 1 bit del mismo tamaño que la imagen utilizada para determinar qué píxeles se dibujarán.

La máscara debe alinearse con un DWORD (32 bits) y debe estar llena de 0. Un píxel 0 significa que "se dibujará el píxel correspondiente en la imagen" y un 1 significa "ignorar este píxel". El color del píxel es explícito para las versiones de 24 y 32 bits (que no tienen tablas de colores), indexado para las otras profundidades (1, 2, 4, 8, 16) en una tabla de colores de cuatro bytes (BGRA) que sigue al BITMAPINFOHEADER.

Para 1 bit, normalmente los dos colores son #00000000 y #00FFFFFF y se ignora el canal A.

Los datos de píxeles de 1, 2, 4, 8 y 16 bits se empaquetan por byte y se alinean con DWORD.

Las imágenes de 24 bits se almacenan como triples BGR pero no están alineadas con DWORD.

Las imágenes de 32 bits se almacenan como quads BGRA.

Originalmente, los ICO y CUR estaban pensados ​​para usarse en pantallas monocromáticas y utilizaban la fórmula Output = (Existing AND Mask) XOR Image, pero en las pantallas a color, el cursor se compone utilizando una combinación de canales A y la máscara se utiliza para determinar qué píxeles se incluyen o excluyen.

Formato PNG

Si una imagen se almacena en formato PNG, entonces no hay BITMAPINFOHEADER y en su lugar se utiliza el contenido completo de la imagen PNG.

La capacidad de leer imágenes PNG desde imágenes en formato ICO se introdujo en Windows Vista . [7] Una imagen PNG se puede almacenar en la imagen de la misma manera que se hace para una imagen en formato BMP estándar de Windows, con la excepción de que la imagen PNG debe almacenarse en su totalidad, con su encabezado de archivo y debe estar en formato ARGB de 32 bpp. [7]

Nota: Los archivos CUR no pueden usar datos de imagen PNG y deben usar datos de imagen BMP según las ICO. [7]

Recursos de iconos y cursores

Los iconos y cursores en archivos ejecutables portátiles ( EXE o DLL ) están organizados en recursos de tipo RT_GROUP_ICON , RT_GROUP_CURSOR , RT_ICON y RT_CURSOR . [13]

Los recursos RT_GROUP_ICON y RT_GROUP_CURSOR contienen la estructura NEWHEADER y una o más estructuras RESDIR que tienen casi el mismo formato que las estructuras ICONDIR e ICONDIRENTRY correspondientes en los archivos ICO/CUR. La principal diferencia en RESDIR es que el último miembro de la estructura contiene un identificador de recurso de dos bytes de RT_ICON / RT_CURSOR en lugar del desplazamiento de la imagen en el archivo.

Las estructuras NEWHEADER / RESDIR también se conocen como GRPICONDIR / GRPICONDIRENTRY en muchas fuentes. [14]


Los recursos RT_ICON y RT_CURSOR tienen el mismo formato de datos de imagen que los archivos ICO y también pueden almacenar imágenes PNG. Además, los primeros cuatro bytes de los datos del recurso RT_CURSOR contienen los datos del punto de acceso del cursor , como dos valores WORD (16 bits) (a diferencia de los archivos CUR, en los que los datos del punto de acceso están contenidos en la estructura ICONDIRENTRY ). [15]

Biblioteca de iconos

Una biblioteca de iconos es una forma de empaquetar iconos de Windows. Normalmente es un archivo binario New Executable de 16 bits o Portable Executable de 32 bits que tiene una extensión .ICL y los recursos de iconos son los iconos empaquetados. Windows Vista y versiones posteriores no admiten la visualización de iconos desde archivos New Executable de 16 bits . [16]

Véase también

Notas

  1. ^ abcde Desde Windows 95, el tamaño de una imagen en la estructura ICONDIRENTRY puede establecerse en cero, lo que significa 256 píxeles. Desde Windows Vista, el tamaño de una imagen se determina a partir de la estructura BITMAPINFOHEADER o de los datos de imagen PNG, lo que técnicamente permite almacenar iconos con más de 256 píxeles, pero Microsoft no recomienda tamaños mayores.
  2. ^ El formato clásico de mapa de bits BITMAPINFOHEADER permite almacenar imágenes con 32 bits por píxel. Cuando se guarda como un archivo .BMP independiente, "no se utiliza el byte alto de cada [píxel]". Sin embargo, cuando estos mismos datos se almacenan dentro de un archivo ICO o CUR, Windows XP (la primera versión de Windows que admite archivos ICO/CUR con más de 1 bit de transparencia) y versiones posteriores interpretan este byte como un valor alfa.
  3. ^ ab El sistema operativo trata de forma equivalente la configuración de los planos de color en 0 o 1, pero si los planos de color se configuran en un valor superior a 1, este valor se debe multiplicar por los bits por píxel para determinar la profundidad de color final de la imagen. Se desconoce si las distintas versiones del sistema operativo Windows son resistentes a diferentes valores de planos de color.
  4. ^ ab "Compatibilidad con iconos y cursores de Windows XP". Microsoft. 18 de noviembre de 2005. Archivado desde el original el 30 de junio de 2011. Consultado el 3 de julio de 2023. El cursor se carga correctamente con cualquier profundidad de color con la que se creó . Sin embargo, el sistema no puede distinguir entre varios candidatos en el mismo archivo o recurso de cursor que solo difieren en sus profundidades de color. Sin embargo, los íconos admiten completamente varios candidatos de íconos con diferentes profundidades de color.
  5. ^ ab Los bits por píxel pueden estar configurados en cero, pero se pueden inferir a partir de los demás datos; específicamente, si el mapa de bits no está comprimido en PNG, entonces los bits por píxel se pueden calcular en función de la longitud de los datos del mapa de bits en relación con el tamaño de la imagen. Si el mapa de bits está comprimido en PNG, los bits por píxel se almacenan dentro de los datos PNG. Se desconoce si las distintas versiones del sistema operativo Windows contienen lógica para inferir la profundidad de bits para todas las posibilidades si este valor se configura en cero.

Referencias

  1. ^ "Estándar de rastreo MIME". WHATWG. 17 de enero de 2014. Archivado desde el original el 27 de marzo de 2014. Consultado el 18 de abril de 2014 .
  2. ^ Fekete, Gyorgy (11 de marzo de 2009). «Operating System Interface Design Between 1981-2009» (Diseño de interfaz de sistema operativo entre 1981 y 2009). Webdesigner Depot . Consultado el 6 de junio de 2011 .
  3. ^ abcdefgh Hornick, John (29 de septiembre de 1995). «Iconos». Artículos técnicos de la interfaz de usuario de Windows ( MSDN ) . Microsoft Corporation . Consultado el 5 de junio de 2011 .
  4. ^ "Componentes de la arquitectura de Windows 95". Microsoft TechNet . Microsoft Corporation . Consultado el 6 de junio de 2011 .
  5. ^ "Shell Icon BPP". Referencia del Registro de Windows 2000 (Microsoft TechNet) . Microsoft Corporation . Consultado el 6 de junio de 2011 .
  6. ^ ab "Creación de iconos de Windows XP". Artículos técnicos de Windows XP (MSDN) . Microsoft Corporation. Julio de 2001. Consultado el 27 de noviembre de 2022 .
  7. ^ abcd Chen, Raymond (22 de octubre de 2010). "La evolución del formato de archivo ICO, parte 4: imágenes PNG". The Old New Thing - Blogs de desarrolladores de Microsoft . Consultado el 27 de noviembre de 2022 .
  8. ^ "Iconos (conceptos básicos de diseño) - Aplicaciones Win32". learn.microsoft.com . 9 de febrero de 2021. Los iconos tienen un tamaño máximo de 256 x 256 píxeles, lo que los hace adecuados para pantallas de alta resolución (dpi). Estos iconos de alta resolución permiten una alta calidad visual en vistas de lista con iconos grandes... Solo se debe incluir una copia de 32 bits de la imagen de 256 x 256 píxeles, y solo se debe comprimir la imagen de 256 x 256 píxeles para reducir el tamaño del archivo.
  9. ^ ab Butcher, Simon (3 de septiembre de 2003). "image/vnd.microsoft.icon" . Consultado el 3 de enero de 2014 .
  10. ^ Lawrence, Eric (11 de febrero de 2011). "IE9 RC Minor Changes List". IEInternals . MSDN Blogs . Consultado el 20 de agosto de 2016 . Usamos "image/x-icon" porque ese es el tipo MIME que siempre hemos usado. Alguien en algún momento (que yo sepa, no relacionado con Microsoft) propuso el registro del tipo MIME como "vnd.microsoft.icon", pero Windows en realidad no lo usa, usa image/x-icon.Vea el segundo comentario.
  11. ^ Descripción general del formato ICO del componente de creación de imágenes de Windows
  12. ^ Chen, Raymond (19 de octubre de 2010). "La evolución del formato de archivo ICO, parte 2: ¡Ahora en color!". The Old New Thing . Consultado el 30 de diciembre de 2022 .
  13. ^ "Formatos de archivos de recursos: aplicaciones Win32". learn.microsoft.com . 2020-08-19 . Consultado el 2023-05-22 .
  14. ^ Chen, Raymond (20 de julio de 2012). "El formato de los recursos de iconos". The Old New Thing - Blogs de desarrolladores de Microsoft . Consultado el 20 de mayo de 2023 .
  15. ^ "Estructura LOCALHEADER - Aplicaciones Win32". learn.microsoft.com . 2020-12-11 . Consultado el 2023-05-22 .
  16. ^ Chen, Raymond (mayo de 2008). "Windows Confidential - Los iconos de 16 bits son cosa del pasado". TechNet Magazine . Consultado el 27 de noviembre de 2022 .

Enlaces externos