Bạn có thể làm điều này với GIFsicle , sử dụng các tùy chọn sau:
gifsicle -U --disposal=previous --transparent="#ffffff" -O2 anim.gif > anim_trans.gif
trong đó anim.gif
và anim_trans.gif
là tên tệp nguồn và đích, và #ffffff
là mã hex của màu bạn muốn làm trong suốt (ở đây, màu trắng tinh khiết).
(Các tùy chọn quan trọng ở đây là -U
/ --unoptimize
và --disposal=previous
, cùng nhau chuyển đổi hình động thành "chế độ sách lật", trong đó mỗi khung hình được xóa hoàn toàn trước khi vẽ khung hình tiếp theo. Điều này cho phép thêm độ trong suốt vào các khung hình mà không để các khung hình trước hiển thị qua Các phần trong suốt. -O2
Tùy chọn này không thực sự cần thiết, nhưng có khả năng thu nhỏ kích thước tệp của hình ảnh động kết quả bằng cách tối ưu hóa các khung để tránh vẽ lại các phần tĩnh của hình động một cách không cần thiết.)
Để phân loại, đây là hình ảnh động của enzyme glyoxalase I (GLO1) của con người từ Wikimedia Commons (trái) và hoạt hình tương tự với độ trong suốt được thêm vào bằng phương pháp hiển thị ở trên (phải):
Hoạt hình gốc của người dùng Wikimedia Commons WillowW , được sử dụng theo giấy phép CC-By 3.0 .
Một chi tiết đáng chú ý là, nếu lệnh GIFsicle dường như không có bất kỳ ảnh hưởng nào, bạn nên kiểm tra xem màu nền có thực sự chính xác hay không. Ví dụ, đối với hình ảnh động được hiển thị ở trên, màu nền thực tế hóa ra là #fdfffc
(tức là rất hơi vàng-trắng hơi xanh) chứ không phải #ffffff
(trắng tinh khiết). Bạn thực sự không thể nhận ra sự khác biệt bằng mắt (hoặc, ít nhất, tôi không thể làm điều đó trên màn hình này), nhưng nó đủ để khiến GIFsicle xem xét hai màu khác nhau.
Cũng lưu ý rằng các tệp GIF chỉ hỗ trợ độ trong suốt 1 bit, có nghĩa là các cạnh của các vùng trong suốt sẽ không bị khử răng cưa. Điều này cũng được miễn là nền bạn đang hiển thị hình động trên không quá xa so với màu nền ban đầu, nhưng nếu có, bạn có thể thấy rằng sẽ có một số màu xấu xí xung quanh các cạnh của hình ảnh động. Thật không may, không có nhiều thứ bạn có thể làm về điều đó, ngoại trừ việc chọn một nền phù hợp hơn hoặc để kết xuất lại hoạt hình.