Dlaczego GIF-y są tak ciężkie
GIF pochodzi z 1987 roku i został zaprojektowany do małych grafik na wolnych łączach, a nie do wideo. Każdą klatkę przechowuje jako osobny obraz skompresowany algorytmem LZW — metodą bezstratną, która dobrze radzi sobie z płaskimi plamami koloru, a słabo ze wszystkim, co zaszumione: nagraniami z kamery, gradientami czy ziarnem filmowym. Nie ma tu kompensacji ruchu, z której korzystają nowoczesne kodeki wideo, więc trzysekundowy klip w 25 klatkach na sekundę to 75 niemal kompletnych obrazów upakowanych jeden po drugim.
Każda klatka jest też ograniczona do 256 kolorów. Gdy GIF powstaje z wideo, enkoder często rozsypuje po każdej klatce szum ditheringu, żeby udawać brakujące odcienie, a właśnie taki szum LZW kompresuje najgorzej. Stąd dobrze znany GIF-reakcja ważący 15 MB, który jako MP4 miałby 600 KB.
Rozmiar zależy od liczby klatek, liczby pikseli na klatkę i szczegółowości kolorów. To narzędzie zmniejsza wszystkie trzy.
Co faktycznie robią trzy poziomy
Narzędzie uruchamia w przeglądarce FFmpeg skompilowany do WebAssembly i przebudowuje GIF w dwóch przebiegach. Pierwszy analizuje całą animację i generuje dla niej jedną zoptymalizowaną paletę; drugi renderuje każdą klatkę od nowa z użyciem tej palety. Klatki są skalowane filtrem Lanczosa, który zachowuje ostrzejsze krawędzie niż proste próbkowanie, a kolory są mapowane ditheringiem uporządkowanym (Bayera), który tworzy regularny wzór kompresujący się znacznie lepiej niż losowy szum.
- Niski — 15 klatek na sekundę, oryginalne wymiary, do 256 kolorów. Najlepszy, gdy GIF musi zachować obecny rozmiar, na przykład demo interfejsu, na którym trzeba odczytać każdy piksel.
- Średni — 12 klatek na sekundę, szerokość i wysokość zmniejszone do 75%, do 128 kolorów. Domyślny i dobry kompromis dla większości GIF-ów na stronach, w dokumentacji i na czatach.
- Wysoki — 10 klatek na sekundę, połowa szerokości i wysokości, do 64 kolorów. Użyj go, gdy musisz zmieścić się w ścisłym limicie, takim jak załącznik e-mail czy limit wgrywania na forum.
Samo zmniejszenie wymiarów o połowę usuwa trzy czwarte pikseli, dlatego poziom Wysoki potrafi zamienić plik 12 MB w coś poniżej 2 MB. Tempo animacji jest zachowane: trzysekundowa pętla nadal trwa trzy sekundy, tylko jest rysowana mniejszą liczbą klatek.
Jak dobrać poziom do treści
Rodzaj animacji ma większe znaczenie niż wyjściowy rozmiar pliku.
- Nagrania ekranu i prezentacje interfejsu zawierają duże płaskie obszary i ostry tekst. Dobrze znoszą redukcję kolorów, ale cierpią przy pomniejszaniu, bo drobny tekst staje się nieczytelny. Zacznij od poziomu Niski; jeśli plik nadal jest za duży, przed kompresją przytnij nagranie do istotnego obszaru.
- Ilustracje, logo i naklejki z kilkoma płaskimi kolorami przy 64 kolorach wyglądają niemal identycznie. Poziom Wysoki zwykle się sprawdza, chyba że grafika jest już mała.
- Klipy z wideo lub nagrania z kamery mają gradienty, odcienie skóry i niebo. Przy 64 kolorach pojawia się na nich pasmowanie, więc bezpieczniejszy jest poziom Średni. Jeśli nawet Średni daje za duży plik, klip jest prawdopodobnie za długi na GIF.
- Pixel artu w ogóle nie należy skalować. Użyj poziomu Niski, który zachowuje oryginalne wymiary.
Jeśli robisz GIF z wideo, zwykle lepiej kontrolować rozmiar już przy tworzeniu za pomocą narzędzia Wideo na GIF i trzymać klip krótkim, a wynik w razie potrzeby dopiero potem skompresować.
Gdy wynik nie jest taki, jak oczekiwano
- Plik prawie się nie zmniejszył. Źródło było prawdopodobnie już zoptymalizowane, na przykład małe, z niską liczbą klatek albo już ograniczone do niewielu kolorów. GIF działający w 8–10 kl./s niewiele zyskuje na kroku obniżającym liczbę klatek. Przejdź poziom wyżej.
- Widoczne pasmowanie w gradientach. To efekt palety 128 lub 64 kolorów. Zejdź na lżejszy poziom.
- Pojawia się faktura przypominająca siatkę. To wzór ditheringu uporządkowanego. Najbardziej widać go na gładkich gradientach przy poziomie Wysoki; Niski lub Średni go ogranicza.
- Dziwne kolory w jednej scenie. Ponieważ cała animacja dzieli jedną paletę, krótka scena o nietypowych kolorach (czerwony błysk w klipie, który poza tym jest niebieski) dostaje mniej miejsc w palecie.
Limity i prywatność
Akceptowane są pliki do 100 MB i można upuścić kilka GIF-ów naraz. Są przetwarzane jeden po drugim z poziomem wybranym w danym momencie, a przy każdym wyniku widać rozmiar przed i po. Pobierz je pojedynczo lub jako jeden ZIP.
Nic nie jest wysyłane. Silnik FFmpeg pobiera się raz, a potem działa lokalnie, więc szybkość przetwarzania zależy od Twojego urządzenia. GIF o wadze 20 MB zajmuje zwykle od kilku sekund do minuty; telefony są wolniejsze od laptopów, a bardzo długim animacjom może zabraknąć pamięci na starszych urządzeniach.