
Tengo un PNG en escala de grises y cuando intento usar ImageMagick (Versión 7.1.1-28) paracrear un archivo ICOsiempre me da la siguiente advertencia:
$ convert favicon.png -define icon:auto-resize=16,32,48,64,256 favicon.ico
convert: Cannot write image with defined png:bit-depth or png:color-type. `' @ warning/png.c/MagickPNGWarningHandler/1526.
Pensé que podría ser el perfil de color de mi PNG original, así que intenté usar ImageMagick para forzar la imagen (¿tal vez mi suposición es incorrecta aquí?) a un espacio de color RGB primero y luego crear el archivo ICO a partir de ese archivo intermedio, pero obtuve el perfil exacto. mismo error.
$ convert favicon.png +profile "*" -colorspace RGB ico-temp.png
$ convert ico-temp.png -define icon:auto-resize=16,32,48,64,256 favicon.ico
convert: Cannot write image with defined png:bit-depth or png:color-type. `' @ warning/png.c/MagickPNGWarningHandler/1526.
¿Qué estoy haciendo incorrectamente aquí? ¿Hay alguna bandera que pueda agregar para que esto funcione?
Y para cualquiera que quiera intentar reproducirlo, encuentro que cualquier SVG o PNG en escala de grises que se convierta en un archivo ICO recibe este error. Este es un SVG de ejemplo que hice para reproducirlo (también funciona si lo conviertes a PNG con esta fuente):
<svg xmlns="http://www.w3.org/2000/svg"
width="100mm"
height="100mm"
viewBox="0 0 100 100">
<circle cx="25" cy="75" r="20" style="fill:#ccc"/>
<circle cx="65" cy="35" r="30" style="fill:#4d4d4d"/>
</svg>
Respuesta1
Piensa que la solución para usar -compress none
comoexplicado aquí; probado en mi instalación de ImageMagick 7.1.1-28 en macOS:
convert favicon.png -compress none -define icon:auto-resize=16,32,48,64,256 favicon.ico
Cuando hago eso con su ejemplo favicon.svg
convertido a favicon.png
, crea limpiamente un favicon.ico
problema.
Otros intentos a continuación.
¿Qué pasa con esto como se sugiere enesta respuesta:
convert -background transparent "favicon.png" -define icon:auto-resize=16,24,32,48,64,72,96,128,256 "favicon.ico"
O tal vez la sugerencia de utilizar -define profile:skip=ICC
comosugerido aquícon -background transparent
:
convert -background transparent "favicon.png" -define profile:skip=ICC -define icon:auto-resize=16,24,32,48,64,72,96,128,256 "favicon.ico"
O sin -background transparent
:
convert "favicon.png" -define profile:skip=ICC -define icon:auto-resize=16,24,32,48,64,72,96,128,256 "favicon.ico"