Mehr als tausend Worte
icoutils
Viele bunte Bildchen
Recht einfach zu vielen hübschen Icons kommen die meisten Windows-Benutzer, indem sie die Datei pifmgr.dll aus dem Windows-System-Verzeichnis in ein eigenes Verzeichnis auf dem Linux-Rechner kopieren. Mit dem Befehl
[andi@gemini test]$ wrestool -l pifmgr.dll --type=14 --name=1 [type=group_icon offset=0xb280 size=48] --type=14 --name=2 [type=group_icon offset=0xb5a0 size=32] […] --type=5 --name=106 [type=dialog offset=0x13030 size=480] […]
erhalten sie eine Liste aller Ressourcen der Datei. Interessant ist vor allem Typ 14 (group_icon), da sich dahinter die Icons verbergen. Andere Inhalte, etwa Dialogboxen, listet wrestool zwar auf, kann sie aber nicht entpacken. Um die Icons zu extrahieren, geben Sie folgenden Befehl ein:
wrestool -x --output=. -t14 pifmgr.dll
Wie der . als Argument zum Output-Parameter festlegt, landen alle gefundenen .ico-Dateien durchgehend nummeriert als pifmgr.exe_t14_1.ico, pifmgr.exe_t14_2.ico etc. im aktuellen Arbeitsverzeichnis. Wählt man einen anderen Pfad, muss man den unbedingt mit einem / am Ende abschließen, wenn das Zielverzeichnis noch nicht existiert.
icotool -x @L: *.ico
wandelt nun alle .ico-Dateien ins PNG-Format um. Sofern Sie Ihren Datei-Manager (etwa Nautilus oder den Konqueror) so konfiguriert haben, dass er Ihnen eine Bildvorschau präsentiert, bietet sich Ihnen nun ein Anblick wie in Abbildung 1.
icotool, mit dem Parameter -c (für "create") aufgerufen, erstellt aus einer oder mehreren .png-Dateien Icons, z. B.
icotool -c -o meinfavicon.ico mein_bild1.png mein_bild2.png
Die Datei meinfavicon.ico dient dabei als eine Art Container, der eine beliebige Anzahl Bilder (hier mein_bild1.png und mein_bild2.png) aufnimmt. Man nutzt diese Eigenart des Dateiformats hauptsächlich, um das gleiche Bild in mehreren Farbtiefen und Größen in einer Datei zu speichern.
Extraktionsmaschine
Da das Extrahieren der Icons aus ausführbaren Dateien zwei Arbeitsschritte benötigt und man danach meistens noch die nun überflüssigen .ico-Dateien loswerden will, lohnt sich ein Skript, das alle Arbeitsschritte zusammenfasst (Listing 1 zeigt als Beispiel eines mit Namen iconextract). Dieses legen Sie in einem Verzeichnis im Suchpfad ab. Der Aufruf erfolgt in der Form
iconextract tolle_icons.dll
Die extrahierten Bilder legt iconextract mit durchnummerierten Namen im aktuellen Arbeitsverzeichnis ab.
Eigentlich ist extresso für diese Aufgabe vorgesehen, allerdings gibt es bislang zu wenig vorgefertigte Resourcefiles, die für bekannte .dll und .exe-Dateien festlegen, was wohin extrahiert werden soll. Die vorhandenen (z. B. win98_pifmgr für pifmgr.dll von der Heft-CD) versehen die extrahierten Bilder mit aussagekräftigen Dateinamen. Kopieren Sie diese Ressourcen-Datei in das Verzeichnis, das auch pifmgr.dll enthält. Rufen Sie in diesem Arbeitsverzeichnis den Befehl
extresso win98_pifmgr --base=. --output=.
auf. Der erste Parameter nennt das zu verwendende Resourcefile; --base legt fest, wo extresso nach pifmgr.dll suchen soll (dem Punkt nach also im aktuellen Verzeichnis). Die extrahierten PNG-Dateien finden Sie, wie in win98_pifmgr angegeben, in einem neuen Unterverzeichnis namens ms unterhalb des Arbeitsverzeichnisses.



