Comment incorporer plusieurs tailles dans un fichier .ico?


17

J'ai vu des icônes .ico qui ont des images différentes pour plusieurs tailles, par exemple. 16x16, 32x32, 48x48, 128x128, 256x256. Sous Windows, comment puis-je créer un fichier icône qui prend en charge plusieurs tailles de cette manière, étant donné que j'ai des fichiers .ico existants pour chaque taille? Veuillez noter que j'espère le faire pour plus de 200 fichiers, donc le faire à partir de cmd serait idéal.

Réponses:


28

ImageMagick (Windows / Mac / Linux) contient un outil de ligne de commande appelé convertqui peut être utilisé pour beaucoup de choses, y compris l' emballage plusieurs images en une seule icône:

convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico

La commande précédente prend 5 images PNG et les combine en un seul fichier .ico.

Contrairement aux autres réponses, cette méthode peut facilement être utilisée dans des scripts batch pour générer automatiquement plusieurs fichiers d'icônes. Dans l'un de mes projets, j'ai une image vectorielle unique (SVG) et j'utilise Inkscape pour générer des png de différentes tailles, puis convertcréer un conteneur d'icônes. Ceci est un exemple réduit (dans un script bash):

#!/bin/bash
for size in 16 32 48 128 256; do
    inkscape -z -e $size.png -w $size -h $size icon.svg >/dev/null 2>/dev/null
done
convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico

1
Mec, j'ai l'impression d'apprendre une nouvelle façon d'utiliser ImageMagick à convertchaque fois que je l'examine. Merci d'avoir répondu!
Suchipi

Comment faites-vous le contraire? Convertir un .icoen plusieurs PNG, en fonction des tailles qu'il contient?
Flimm

2
@Flimm convert favicon.ico favicon.pnggénère favicon-0.png, favicon-1.pngetc. pour chaque icône dans le cadre. Si vous souhaitez connaître les dimensions de l'image, utilisez la identifycommande sur le fichier png.
Rob W

Vous pouvez utiliser imagemagicks own convert <icon.png> -resize 64x64au lieu d'Inkscape
kumarharsh

J'ai ajouté -dither Noneà la commande convert car la conversion par défaut à 256 couleurs a ajouté du bruit à mon icône
James Roth

7

Meilleure commande pour ImageMagick:

convert in.jpg -define icon:auto-resize=16,48,256 -compress zip out.ico

1
C'est une excellente réponse en fait. Utilisez cette commande pour tester que le fichier a réellement été converti:identify out.ico
kumarharsh

5

Vous pouvez le faire gratuitement dans GIMP . Il y a de brèves instructions pour ce faire ici .

Citer:

  1. Ouvrez votre image dans Gimp
  2. Faites votre carré de toile
  3. Redimensionnez votre calque à l'image
  4. Redimensionnez le calque à la plus grande taille de votre fichier .ico, comme 64 pixels
  5. Dupliquer le calque
  6. Redimensionnez le calque en double à la taille suivante
  7. Gardez la duplication / mise à l'échelle pour toutes les tailles que vous souhaitez dans votre fichier .ico
  8. Enregistrer sous .ico

Dans votre cas, vous pouvez soit commencer par la plus grande image et réduire pour chaque image dupliquée, soit ajouter de nouveaux calques et importer les images d'icônes spécifiques que vous souhaitez dans ce calque.


Comment prenez-vous en charge plusieurs profondeurs de couleurs par cette méthode?
Random832

Je ne peux pas dire que j'ai dû le faire personnellement, mais ce message dit que GIMP devrait faire apparaître une boîte de dialogue de paramètres de couleur pour chaque couche lors de l'enregistrement.
techturtle

Vous devez choisir d'exporter dans Gimp 2.8.16 mais des années plus tard, je peux confirmer qu'il y a une boîte de dialogue pour les paramètres de couleur lorsque vous exportez l'ico.
Broots Waymb

1

Voici la réponse acceptée par Rob W , avec une adaptation triviale pour éviter d'avoir à taper les tailles (16, 32, etc.) plus d'une fois:

#!/bin/bash
files=()
for size in 16 32 48 128 256; do
    inkscape -z -e "$size.png" -w "$size" -h "$size" logo.svg > /dev/null 2> /dev/null
    files+=("$size.png")
done
convert "${files[@]}" -colors 256 favicon.ico
unlink  "${files[@]}"

Ici , logo.svgreprésente l'entrée (source) image à partir de laquelle nous créons des fichiers plus petits des dimensions désirées ( 16.png, 32.png, etc.) que nous combinons ensuite dans le fichier d'icône de sortie (résultat), favicon.ico. Vous pouvez changer la liste des tailles à la ligne 3, par exemple, en "16 24 32 48 64 72 128", et la convertcommande s'adaptera automatiquement en conséquence, car ce script utilise la technique décrite par G-Man dans sa réponse ici pour construire un tableau de noms de fichiers. Et enfin, nous dissocions (supprimons) les fichiers PNG créés à la ligne 4, en utilisant à nouveau le tableau des noms de fichiers.


J'ai remarqué que la commande:

convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico

(équivalent à celui présenté dans la réponse de l'utilisateur 400747 ) image bitmap réellement mise à l'échelle (qualité perdue) et l'arrière-plan des couches a perdu la transparence.


1
(1) Vous avez essentiellement copié la réponse de quelqu'un d'autre. Si vous avez fait cela et rien de plus (oui, les gens le font parfois), je signalerais votre réponse pour suppression. Je ne fais pas ça, parce que vous avez fait une petite amélioration. Mais, chaque fois que vous copiez le travail de quelqu'un d'autre, vous devez reconnaître l'auteur original par son nom et en créant un lien vers les informations que vous citez. (2) Veuillez ne pas dire des choses comme «c'est plus flexible» sans expliquer ce que vous voulez dire. … (Suite)
Scott

(Suite)… (3) Vous devez toujours citer les variables du shell, sauf si vous avez une bonne raison de ne pas le faire, et vous êtes sûr de savoir ce que vous faites. En fait, de tous les exemples que j'ai vus de scripts qui utilisent des variables de shell sans les citer, le vôtre (c'est-à-dire Rob W's ) est peut-être parmi les moins mauvais. Mais encore, il vaut mieux citer les variables. (4) Pourquoi utilisez-vous unlinkau lieu des plus courants rm?
Scott

1

Fichier de commandes Windows, qui crée des fichiers .PNG de plusieurs tailles et les fusionne en un seul fichier .ICO:

@echo off

set inkScape="C:\SOFTWARE\GRAPHIC\INKSCAPE\inkscape.exe"
set imageMagick="C:\SOFTWARE\DEVELOPER\IMAGEMAGICK\magick.exe"
set fileName=favicon
set importType=svg
set exportType=png
set exportDpi=300
set imageSizes=(16 24 32 48 57 60 64 70 72 76 96 114 120 128 144 150 152 180 192 196 256 300 320 400 450 460 480 512 600)

for %%s in %imageSizes% do (
 %inkScape% -z -f %~dp0%fileName%.%importType% -w %%s -h %%s -e %~dp0%fileName%-%%sx%%s.%exportType% -d %exportDpi%
 echo CREATED: %fileName%-%%sx%%s.%exportType%
 set e=%fileName%-%%sx%%s.%exportType%
 call :concat (e)
)

%imageMagick% %exportFileNames%"%~dp0%fileName%.ico"
echo MERGED IN: %fileName%.ico

pause goto :eof


:concat (e) (
 set exportFileNames=%exportFileNames%"%~dp0%e%" 
)

Si vous n'avez pas besoin des fichiers .PNG, vous pouvez les supprimer (ou les supprimer) par del FILEou vous enregistrez tous les PNG dans un répertoire que vous pouvez supprimer (après %imageMagick% %exportFileNames%"%~dp0%fileName%.ico").

J'espère que cela aide quelqu'un. :)


0

À mon avis, Axialis IconMaker est la meilleure solution aux problèmes d'icônes. Il y a un essai de 30 jours qui résoudra probablement le problème pour vous.

J'utilise Axialis depuis tant d'années et sur de nombreux projets, je peux attester que c'est un produit vraiment valable. Vous n'aurez pas besoin de 30 jours! Ha!


0

Vous devez utiliser un programme d'édition d'icônes tiers car MSPaint ne prend en charge qu'une seule icône par fichier. Il y a deux ou trois de discussions ici avec des recommandations pour les éditeurs icône, certains gratuits, commercial.

Une fois que vous vous êtes installé sur un éditeur d'icônes, la méthode d'ajout de formats d'icônes varie mais est généralement similaire (vous cliquez sur un bouton ou sélectionnez un élément de menu pour ajouter un nouveau format). La plupart des programmes vous permettent d'importer un fichier d'icône lors de l'ajout d'un format / taille d'icône, mais la plupart vous permettent également de créer un nouveau format / taille à partir de celui existant en le redimensionnant.

Si vous choisissez d'utiliser l' option créer à partir de l'existant lors de l'ajout d'un nouveau format / taille, assurez-vous de les créer à partir du plus grand format d'icône dont vous disposez déjà, car il contiendra le plus de données pour l'algorithme de redimensionnement avec lequel travailler. . Assurez-vous également d'utiliser une version transparente lorsque vous créez une icône XP / Vista, car la plupart des programmes ne sont pas très efficaces pour créer le canal alpha à partir de zéro.


Je dois le faire pour plus de 200 icônes. L'un de ces éditeurs d'icônes peut-il exécuter les choses en lot?
Suchipi

1
Je ne me souviens pas avoir jamais vu un éditeur d'icônes avec le mode batch. Vous pouvez essayer d'utiliser un éditeur d'images en mode batch, mais je ne sais pas si certains éditeurs d'images prennent en charge les icônes multi-formats (du moins pas en ligne de commande / mode batch). Si tel est le cas, ce serait ImageMagick. Vous devez également ajouter l'exigence de volume et de mode batch à la question.
Synetech

0

Vous pourriez essayer le png2ico de Matthias Benkmann . Il est gratuit et peut regrouper des png de plusieurs tailles dans un seul fichier ico.


Il a cependant quelques restrictions intéressantes:Width must be multiple of 8 and <256. Height must be <256.
Francois Botha
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.