web-dev-qa-db-fra.com

Conversion de GIF, PNG et JPG en fichiers .ICO à l'aide d'Imagemagick

De: JPG, à: ICO;

/usr/bin/convert -resize x16 -gravity center -crop 16x16+0+0 input.jpg \
-transparent white -colors 256 output/favicon.ico 

Il s'agit de la sortie de la ligne de commande.

De: GIF, PNG À: ICO;

/usr/bin/convert -resize x16 -gravity center -crop 16x16+0+0 input.png \
-flatten -colors 256 output/favicon.ico 

J'ai des problèmes de transparence. Je n'arrive pas à obtenir le bon code pour cela, j'ai essayé -channel alpha -negate, etc.

Cela crée une image et lorsque je postule sur le site, cela fonctionne avec Firefox mais aucun des autres navigateurs. IE, Chrome, Opera et Safari le détestent tous pour une raison quelconque, c'est un simple fichier favicon.ico. Ma conclusion est que ce doit être ma commande quelque part qui casse. Aidez-moi?

66
Chris Braid

Ajoutez cette option à convert:

-background transparent

Cependant, gardez à l'esprit que votre image d'origine doit en fait avoir un canal alpha. Les fichiers PNG peuvent avoir un canal alpha, les fichiers JPEG non.

42
jcoffland

Pour convertir PNG en ICO, en définissant les tailles souhaitées et en préservant la transparence:
(fonctionne pour ImageMagick 7.0 ou plus récent)

convert -background transparent "favicon.png" -define icon:auto-resize=16,24,32,48,64,72,96,128,256 "favicon.ico"

Dans cet exemple, le fichier ico aura 9 entrées: 16x16 px, 24x24 px, etc. (en supposant qu'il soit carré)


Astuce: Si vous êtes sous Windows 7, vous pouvez enregistrer le code ci-dessous dans un fichier REG et l'appliquer au registre. Cela va créer une entrée dans le menu contextuel des fichiers PNG appelée "Convertir en ICO". Lorsque vous cliquez avec le bouton droit sur file.png et sélectionnez cette commande, file.png.ico sera généré dans le même dossier.

InstallConvertToIcoCtxMenu.reg
(n'oubliez pas de remplacer le chemin ImageMagick par le chemin où il est installé sur votre ordinateur)

Windows Registry Editor Version 5.00

; Created with Default Programs Editor
; http://defaultprogramseditor.com/

; Edit Verb
[HKEY_CURRENT_USER\Software\Classes\pngfile\Shell\ConvertToICO]
@="Convert to ICO"
[HKEY_CURRENT_USER\Software\Classes\pngfile\Shell\ConvertToICO\command]
@="\"C:\\Program Files\\ImageMagick\\7.0.3-Q16\\convert.exe\" -background transparent \"%1\" -define icon:auto-resize=16,24,32,48,64,72,96,128,256 \"%1.ico\""
[HKEY_CURRENT_USER\Software\Classes\pngfile\Shell\ConvertToICO]
"Icon"="C:\\Program Files\\ImageMagick\\7.0.3-Q16\\convert.exe,0"

An entry is added to context menu

10
geekley

Une solution au problème ICO serait de ne pas l'utiliser:

<link rel=icon href=/favicon.png>

Fonctionne dans tous les navigateurs et vous pouvez utiliser un format de fichier plus sain avec une meilleure compression.

3
Kornel