Wie kann ich mehrere Größen in ein einbetten?ico-Datei?

Ich habe gesehen .ico Symbole, die unterschiedliche Bilder für mehrere Größen haben, zB. 16x16, 32x32, 48x48, 128x128, 256x256. Wie kann ich unter Windows eine Symboldatei erstellen, die auf diese Weise mehrere Größen unterstützt, sofern ich vorhanden bin?ico-Dateien für jede Größe? Bitte beachten Sie, dass ich hoffe, dies für mehr als 200 Dateien zu tun, also wäre es ideal, es von cmd aus zu tun.

Author: Journeyman Geek, 2012-10-22

8 answers

ImageMagick (Windows/Mac/Linux) enthält ein Befehlszeilentool namens convert das kann für viele Dinge verwendet werden, einschließlich des Verpackens mehrerer Bilder in ein Symbol:

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

Der vorherige Befehl nimmt 5 PNG-Bilder und kombiniert sie zu einem einzigen .ico-Datei.

Im Gegensatz zu den anderen Antworten kann diese Methode einfach in Batch-Skripten verwendet werden, um automatisch mehrere Symboldateien zu generieren. In einem meiner Projekte habe ich ein einzelnes Vektorbild (SVG) und verwende Inkscape um png in verschiedenen Größen zu erzeugen, gefolgt von convert um einen Icon Container zu erstellen. Dies ist ein reduziertes Beispiel (in einem bash-Skript):

#!/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
 34
Author: Rob W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-12-02 22:25:33

Besserer Befehl für ImageMagick:

convert in.jpg -define icon:auto-resize=16,48,256 -compress zip out.ico
 14
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-01-26 00:26:54

Sie können dies kostenlos in GIMP tun. Es gibt kurze Anweisungen dafür hier.

Zu zitieren:

  1. Öffne dein Bild in Gimp
  2. Machen Sie Ihre Leinwand quadratisch
  3. Ändern Sie die Größe Ihrer Ebene auf das Bild
  4. Skalieren Sie die Ebene auf die größte Größe in Ihrem .ico-Datei wie 64 Pixel
  5. Duplizieren Sie die Ebene
  6. Skalieren Sie die doppelte Ebene auf die nächste Größe
  7. Duplizieren / Skalieren für alle Größen, die Sie in Ihrem wollen .ico-Datei
  8. Speichern .ico

In Ihrem Fall können Sie entweder mit dem größten Bild beginnen und für jedes duplizierte Bild verkleinern oder einfach neue Ebenen hinzufügen und die gewünschten Symbolbilder in diese Ebene importieren.

 7
Author: techturtle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-10-22 17:15:58

Hier ist die akzeptierte Antwort von Rob W, mit einer trivialen Anpassung um zu vermeiden, dass die Größen (16, 32 usw.) eingegeben werden müssen.) mehr als einmal:

#!/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[@]}"

Hier stellt logo.svg das Eingabe - (Quell -) Bild dar, aus denen wir kleinere Dateien der gewünschten Größe erstellen (16.png, 32.png, etc.) die wir dann in der Ausgabe (Ergebnis) Symboldatei kombinieren, favicon.ico.  Sie können die Liste der Größen in Zeile 3 ändern, z.B. zu "16 24 32 48 64 72 128", und der Befehl convert passt sich automatisch an dementsprechend, weil dieses Skript die von G-Man beschriebene Technik verwendet in seine Antwort hier ein Array von Dateinamen zu bauen.  Und schließlich entsperren (entfernen) wir die in Zeile 4 erstellten PNG-Dateien, verwenden Sie das Array von Dateinamen erneut.


Ich habe bemerkt, dass der Befehl:

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

(entspricht der in user400747 ' s Antwort ) tatsächlich skaliertes Bitmap-Bild (verlorene Qualität) und Ebenen Hintergrund verloren Transparenz.

 2
Author: Andris Petrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-10-12 20:38:32

Windows Batch-Datei, die mehrere Dateien erstellt .PNGs und verschmelzen sie zu einem .ICO-Datei:

@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%" 
)

Wenn Sie das nicht brauchen .PNG-Dateien, können Sie löschen (oder entfernen) sie durch del FILE oder Sie speichern alle PNGs in einem Verzeichnis, das Sie entfernen können (nach %imageMagick% %exportFileNames%"%~dp0%fileName%.ico").

Hoffe es hilft jemandem. :)

 1
Author: Froschkoenig84,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-06-07 03:24:38

Meiner Meinung nach ist Axialis IconMaker die beste Lösung für Icon-Probleme. Es gibt eine 30-Tage-Testversion, die das Problem wahrscheinlich für Sie lösen wird.

Ich benutze Axialis seit so vielen Jahren und bei so vielen Projekten kann ich bezeugen, dass es sich um ein wirklich lohnendes Produkt handelt. Sie brauchen keine 30 Tage! Ha!

 0
Author: Jerry Nixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-10-22 17:13:54

Sie müssen ein drittes -Symbolbearbeitungsprogramm verwenden, da MSPaint nur ein einzelnes Symbol pro Datei unterstützt. Es gibt ein paar von threads hier mit Empfehlungen für die icon-Editoren, einige kostenlos, einige kommerzielle.

Sobald Sie sich für einen Symboleditor entschieden haben, variiert die Methode zum Hinzufügen von Symbolformaten, ist jedoch im Allgemeinen ähnlich (Sie klicken auf eine Schaltfläche oder wählen einen Menüpunkt aus, um ein neues Format hinzuzufügen). Mit den meisten Programmen können Sie beim Hinzufügen eines Symbols eine Symboldatei importieren format / Größe, aber die meisten lassen Sie auch ein neues Format/Größe aus dem vorhandenen erstellen, indem Sie es neu dimensionieren.

Wenn Sie die Option create-from-existing verwenden, wenn Sie ein neues Format/eine neue Größe hinzufügen, stellen Sie sicher, dass Sie sie aus dem größten bereits verfügbaren Symbolformat erstellen, da es die meisten Daten für den Re-Sizing-Algorithmus enthält, mit dem Sie arbeiten können. Stellen Sie außerdem sicher, dass Sie beim Erstellen eines XP/Vista-Symbols eine Version mit Transparenz verwenden, da die meisten Programme beim Erstellen des alpha-Kanal von Grund auf neu.

 0
Author: Synetech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:44

Sie könnten Matthias Benkmanns [[1]}png2ico ausprobieren. Es ist kostenlos und kann Multi Size png ' s in eine einzelne ICO-Datei packen.

 0
Author: Dimitri C.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-02-19 08:04:29