Wie kann ich mit whirlgif ein animiertes GIF-Bild mit transparentem Hintergrund erstellen?

Grundsätzlich ist dazu die Option -trans gedacht, die sowohl als globale Option als auch als Option für einzelne Dateien verwendet werden kann. Mit dem Befehl »identify -verbose « (aus dem ImageMagick-Paket) kann man Informationen inkl. der Farbpalette zu einem GIF-Bild erhalten und so den Index in die Farbpalette für jede Farbe bestimmen. Diesen oder alternativ die Farbe als Hex-Wert braucht man als Argument zur Option -trans. identify zeigt auch, welche Farbe in einem Bild Transparenz darstellen soll, wenn vorhanden. Dazu sucht man in der Histogramm-Ausgabe nach einem Eintrag für eine Farbe, die transparent ist (Hex-Ziffern 7 und 8 sind »FF«) und bestimmt aus der Farbtabelle den Index-Wert für die entsprechende nicht-transparente Farbe.Ohne die Option -trans erzeugt whirlgif Bilder, die keine Transparenz haben, auch nicht für Farben die in den Ausgangsbildern transparent sind. Zu überprüfen z.B. mit »whirlgif -o file.out.gif file.in.gif«.

Die Option -trans kann ja als globale und dateispezifische Option verwendet werden (die dann für alle Dateien bis zur erneuten Verwendung von -trans gilt). Die globale Option ist intern nichts anderes als eine dateispezifische Option vor der ersten Datei.

Gibt man zur Option -trans eine Farbe an (als Index oder Hex-Wert), zu der im ersten darauffolgenden Bild keine Pixel existieren, so wird diese Option vollständig ignoriert. Auch wenn die Farbe zumindest in der Farbtabelle des Bildes steht (steht sie nicht darin, wird sie durch diese Option auch nicht dort aufgenommen). Diese Option wird selbst dann ignoriert wenn in später folgenden Eingabedateien, für die diese Option ja eigentlich auch gelten soll, Pixel in dieser Farbe existieren.

Nach der Dokumentation kann man für unterschiedliche Sub-GIFs unterschiedliche Farben transparent machen. Das ist möglich, jedoch nur wenn man die Farbe als Hex-Tripel (z.B. ‘#ff0000’) angibt. Hier kann man die Farbe nicht als Index in die Farbtabelle angeben, unabhängig davon ob man -globmap verwendet oder nicht.

Gebraucht man -trans als Option für eine einzelne Datei, so wird dadurch gleichzeitig die Hintergrundfarbe auf diese Farbe gesetzt.

Die mit whirlgif zusammengesetzten Ausgangsbilder sollten am besten keine Transparenz haben. Das macht es einfacher, sie zu bearbeiten. Denn in Programmen wie GIMP kann nicht beeinflusst werden, welche Farbe der Farbtabelle den Zusatz »volle Transparenz« erhält.

Ein Bug in whirlgif verhindert, dass Farben zu Transparenz konvertiert werden können, die mehr als einmal in der entsprechenden Farbtabelle (der lokalen für das jeweilige Bild oder der globalen wenn -globmap verwendet wird) auftauchen. Man achte also darauf, dass solche doppelten Einträge in Farbtabellen nicht existieren. In GIMP z.B. dadurch, dass man eine eigene Palette zur Indizierung auswählt.

Ob man eine globale Farbtabelle oder viele lokale Farbtabellen verwendet hat wenig Einfluss auf die Dateigröße (etwa 4 Byte pro Eintrag in einer zusätzlichen Farbtabelle).

Will man ein Bild eines Gegenstandes linear bewegen, ist es sinnvoll es genau so hoch zu machen wie der Hintergrund, auf dem dieses Bild bewegt werden soll.

Es gibt, zumindest im Zusammenhang mit Transparenz in GIFs, keinen Grund die Hintergrundfarbe mit Hilfe der Option -background zu verändern.

Doppelte Einträge in der Farbtabelle entstehen in GIMP offensichtlich, um die Farbtabelle aufzufüllen bis zu einer Anzahl Farben die eine Potenz von 2 ist.

Verwendet man ImageMagick-Befehle wie composite, um die Frames einzeln zu erzeugen und danach zusammenzufügen, so sollten alle Frames dieselben Farben enthalten (d.h. mind. einen Pixel in jeder Farbe), damit ihre colormap übereinstimmt. ImageMagick optimiert nämlich die colormap eines Bildes automatisch, d.h. entfernt unnötige Einträge. Wenn aber die colormap nicht übereinstimmt, funktionieren einige globale Optionen zu whirlgif, die sich auf Einträge der colormap beziehen, nicht wie erwartet.


Posted

in

,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.