Por qué un solo favicon.ico contiene cinco imágenes a la vez
Un archivo .ico no es tanto un formato de imagen como un archivador diminuto. Empieza con una
cabecera de seis bytes que dice cuántas imágenes hay dentro, seguida de un registro de directorio de
dieciséis bytes por imagen (ancho, alto, profundidad de color, longitud de la carga y su
desplazamiento), y después las cargas en sí puestas una detrás de otra. Lo que necesite el icono lee
el directorio, elige el tamaño más cercano al que quiere e ignora el resto.
Ese diseño es la razón por la que una pestaña de navegador, una barra de tareas de Windows y un acceso directo de escritorio pueden compartir un único archivo y verse nítidos los tres: cada uno coge una entrada distinta. Y es también la razón de la peculiaridad famosa del formato. Los campos de ancho y alto son de un byte cada uno, así que solo pueden contar hasta 255, y el 256 (el máximo del formato) se codifica como cero. Lee esos bytes de forma ingenua y un precioso icono de 256 píxeles se declara a sí mismo de cero píxeles de ancho. Nuestro lector resuelve ese caso antes de que nada más mire los números.
El problema empieza cuando quieres editarlo. Photoshop, Figma, Sketch y la mayoría de visores o
rechazan el .ico directamente o abren exactamente una entrada arbitraria y esconden las demás. El
contenedor que hacía el archivo tan cómodo para los sistemas operativos es el mismo contenedor que
deja el dibujo encerrado lejos de las herramientas con las que trabajarías sobre él.
PNG dentro de ICO frente al DIB heredado, y cómo saber cuál tienes
Ha habido dos formas de guardar los píxeles de una entrada. La original, de los tiempos de los iconos
de 16 colores, es un mapa de bits independiente del dispositivo en crudo: una BITMAPINFOHEADER, las
filas de color guardadas de abajo arriba, y una máscara AND de un bit aparte que lleva la
transparencia. Desde Windows Vista una entrada puede ser en su lugar un archivo PNG completo, firma
incluida, metido en el contenedor tal cual.
Prácticamente todo lo hecho en los últimos quince años usa la forma PNG, incluido cada archivo que produce nuestra propia herramienta de PNG a ICO. Este extractor maneja solo esa forma. Recorre el directorio, corta cada carga y comprueba los primeros ocho bytes contra la firma PNG. Las entradas que coinciden se te entregan directamente. Las que no, se saltan, porque un mismo archivo puede mezclar las dos disposiciones entre sus tamaños. Solo cuando nada del archivo resulta ser un PNG obtienes un error, y el mensaje dice exactamente eso en lugar de fingir que el archivo estaba corrupto.
No necesitas saber de antemano cuál tienes. Suelta el archivo y el resultado te lo dice.
Dónde esta herramienta deja de ser la respuesta correcta
Lee iconos; no los crea ni los repara. Si tienes un dibujo y quieres un icono, ve en la otra
dirección con PNG a ICO, o usa el
generador de favicons cuando necesites el conjunto moderno entero: un
.ico de varios tamaños, PNG sueltos, un apple-touch-icon, un manifiesto web y el HTML que los
referencia. Partiendo de un PNG recuperado, ese generador suele ser el paso siguiente en lugar de otra
extracción.
Sacar todos los tamaños
- Suelta tu
.icoen la caja de arriba, o usa el botón de elegir archivo. - Pulsa convertir. El directorio se analiza y cada PNG incrustado se copia fuera en la memoria de tu propio navegador.
- Una imagen dentro significa una descarga PNG. Dos o más significan un ZIP, nombrado a partir de tu archivo.
- Abre el ZIP y coge los tamaños que necesites. Los nombres llevan las dimensiones, y si el icono repite legítimamente un tamaño a distinta profundidad de color, el duplicado recibe un sufijo numérico para que nada sobrescriba nada.
Un favicon típico son unos pocos kilobytes de troceado de búferes, así que está listo en cuanto se ha leído el archivo. No hay cola, ni barra de progreso de subida, ni límite de tamaño más allá de lo que tu propio dispositivo pueda sostener, porque tu dispositivo lo está haciendo todo. Nada del archivo se transmite, lo que importa cuando el icono en cuestión es una marca sin publicar o la identidad de un cliente que te confiaron.

