Możesz to zrobić za pomocą GIFsicle , używając następujących opcji:
gifsicle -U --disposal=previous --transparent="#ffffff" -O2 anim.gif > anim_trans.gif
gdzie anim.gif
i anim_trans.gif
są źródłowymi i docelowymi nazwami plików oraz #ffffff
kodem szesnastkowym koloru, który chcesz uczynić przezroczystym (tutaj czysta biel).
(Ważnymi opcjami tutaj są -U
/ --unoptimize
i --disposal=previous
, które razem przekształcają animację w „tryb flipbooka”, w którym każda klatka jest całkowicie usuwana przed narysowaniem kolejnej. Pozwala to na dodanie dodatkowej przezroczystości do klatek bez konieczności wyświetlania wcześniejszych klatek przez przezroczyste części. -O2
Opcja nie jest absolutnie niezbędna, ale może zmniejszyć rozmiar pliku wynikowej animacji poprzez optymalizację ramek, aby uniknąć niepotrzebnego ponownego rysowania statycznych części animacji.)
Dla pokazu, oto animacja enzymu ludzkiej glioksalazy I (GLO1) z Wikimedia Commons (po lewej) i ta sama animacja z przezroczystością dodana przy użyciu metody pokazanej powyżej (po prawej):
Oryginalna animacja autorstwa użytkownika Wikimedia Commons WillowW , wykorzystana na licencji CC-By 3.0 .
Należy zwrócić uwagę na jeden szczegół: jeśli polecenie GIFsicle nie wydaje się mieć żadnego efektu, należy sprawdzić, czy kolor tła jest naprawdę poprawny. Na przykład w przypadku animacji pokazanej powyżej rzeczywisty kolor tła okazał się #fdfffc
(tj. Bardzo lekko żółto-zielonkawo biały), a nie #ffffff
(czysta biel). Nie da się tak naprawdę odróżnić wzrokowo (a przynajmniej nie mogę tego zrobić na tym ekranie), ale wystarczy, żeby GIFsicle rozważył te dwa kolory inaczej.
Należy również pamiętać, że pliki GIF obsługują tylko 1-bitową przezroczystość, co oznacza, że krawędzie przezroczystych obszarów nie będą wygładzane. Jest to OK, o ile tło, na którym wyświetlana jest animacja, nie jest zbyt dalekie od oryginalnego koloru tła, ale jeśli tak, może się okazać, że wokół krawędzi animacji będą brzydkie kolorowe obwódki. Niestety niewiele można na to poradzić, oprócz wybrania bardziej odpowiedniego tła lub ponownego renderowania animacji.