Ви можете зробити це за допомогою GIFsicle , скориставшись наступними параметрами:
gifsicle -U --disposal=previous --transparent="#ffffff" -O2 anim.gif > anim_trans.gif
де anim.gif
і anim_trans.gif
є назви вихідних та цільових файлів, і #ffffff
це шістнадцятковий код кольору, який ви хочете зробити прозорим (тут чисто білий)
(Важливі параметри тут -U
/ --unoptimize
і --disposal=previous
, які разом конвертувати анімацію в «режим Flipbook», де кожен кадр повністю стертий перед нанесенням наступного. Це дозволяє додаткова прозорість повинна бути додана до рам , не даючи більш ранні кадри показують через прозорі частини. Цей -O2
параметр не є строго необхідним, але, швидше за все, зменшити розмір файлу отриманої анімації шляхом оптимізації кадрів, щоб уникнути зайвого повторного малювання статичних частин анімації.)
Для демонстрації ось анімація ферменту людської гліоксалази I (GLO1) від Wikimedia Commons (зліва) та та сама анімація з прозорістю, що додається методом, показаним вище (праворуч):
Оригінальна анімація користувача Wikimedia Commons WillowW , що використовується під ліцензією CC-By 3.0 .
Однією деталлю, яку варто відзначити, є те, що якщо команда GIFsicle, здається, не має ніякого ефекту, слід перевірити, чи колір фону справді правильний. Наприклад, для анімації, показаної вище, фактичний колір фону виявився #fdfffc
(тобто дуже злегка жовто-зеленувато-білим), а не #ffffff
(чисто білий). Насправді ви не можете визначити різницю оком (або, принаймні, я не можу цього зробити на цьому екрані), але достатньо, щоб GIFsicle вважав два кольори різними.
Також зауважте, що файли GIF підтримують лише 1-бітну прозорість, а це означає, що краї прозорих областей не будуть антизаданими. Це нормально, поки фон, на якому ви показуєте анімацію, не надто далеко від початкового кольору фону, але якщо він є, ви можете виявити, що навколо країв анімації буде некрасивий колір . На жаль, з цим не можна багато зробити, окрім вибору більш підходящого фону або для повторного відтворення анімації.