Kompresja GIF

Kompresja GIF online dla każdego. Walidacja rozmiaru, bezpieczne przetwarzanie, publiczny URL wyniku.

  • Bez rejestracji
  • Szybkie działanie
  • Operacje w pamięci
Przewodnik krok po kroku

Zero back-endu, 100% lokalnie.

icon

Kompresja GIF

*
Przeciągnij i upuść pliki tutaj lub kliknij, aby wybrać
Maksymalny rozmiar pliku: 50 MB
Przetwarzanie...

Kompresja GIF online. Zmniejsz animacje bez utraty sensu i płynności

To narzędzie kompresuje pliki GIF z użyciem binarki gifsicle i rozsądnych presetów. Ustawiasz liczbę kolorów, poziom optymalizacji i ewentualną stratność, a moduł zwraca lżejszy GIF z zachowaniem kluczowych klatek. Działa wsadowo, pokazuje podglądy, liczy oszczędności i daje link do pobrania.

GIF
gifsicle
Optimize 1-3
Lossy 0-200

Zobacz jak działa

Co potrafi narzędzie i kiedy go użyć

Kompresja GIF jest przydatna w mailingu, na landing page oraz w aplikacjach, gdzie animacja musi ważyć jak najmniej. Ten moduł przetwarza wiele plików jednocześnie, dopasowuje paletę kolorów, optymalizuje redundancję klatek i umożliwia stratną redukcję artefaktów. Po stronie UI dostajesz pole wyboru plików, ustawienia parametrów i czytelną tabelę wyników z podglądem. Po stronie serwera działa walidacja typu i rozmiaru, zarządzanie plikami tymczasowymi oraz zapis do storage publicznego z bezpośrednim URL.

  • Wsadowa kompresja GIF bez instalacji po stronie użytkownika.
  • Regulacja palety kolorów w zakresie 2 do 256.
  • Trzy poziomy optymalizacji, od szybkiej po agresywną.
  • Tryb lossy z kontrolą w skali 0 do 200 - precyzyjna wymiana jakości na wagę.
  • Podgląd miniatur, dokładne liczby przed i po, procent oszczędności.

Jak działa kompresor pod spodem

Komponent Livewire przyjmuje pliki i aktualizuje previews natychmiast po wgraniu. Metoda compress waliduje typ MIME image/gif oraz maksymalną wagę na podstawie $max_file_size_mb. Dla każdego pliku wywoływana jest funkcja runGifsicle, która szuka binarki gifsicle w środowisku, buduje parametry w oparciu o wybór użytkownika i uruchamia komendę systemową. W razie niepowodzenia działa fallback do łańcucha ImageOptimizer. Na końcu wynik trafia do dysku publicznego z unikalną nazwą i linkiem do pobrania.

// Pseudokod przetwarzania
for file in local_files:
  temp   = storeTemp(file)
  before = filesize(temp)
  out    = temp + ".opt.gif"
  ok     = runGifsicle(temp, out)   // --optimize=N --colors=K [--lossy=M]
  if !ok:
     try Spatie ImageOptimizer -> optimize(temp)
     out = temp
  after  = filesize(out)
  saved  = max(0, before - after)
  pct    = before > 0 ? round(saved/before*100, 2) : 0
  path   = "tools/gif-compressor/" + uniqid() + "_" + originalName
  url    = Storage::disk("public")->putFileAndGetUrl(out, path)
  pushRow(name, before, after, saved, pct, url)
Główny zysk pochodzi z redukcji palety kolorów, usuwania zbędnych klatek oraz optymalizacji LZW. Parametr lossy pozwala dodatkowo wygładzić przejścia, co zmniejsza entropię i finalny rozmiar.

Mapa opcji i ich wpływ na wynik

Liczba kolorów

Zakres 2 do 256. Mniejsza paleta oznacza mniejsze pliki, lecz potencjalne pasy na gradientach. Dla ikon i prostych animacji 64 do 128 kolorów zwykle wystarcza. Dla screencastów próbuj 128 do 256 aby uniknąć bandingu.

Paleta

Poziom optymalizacji

Wartości 1, 2 lub 3. Wyższy poziom intensywniej analizuje klatki i usuwa powtarzalne piksele. 1 jest szybki i bezpieczny. 2 to dobry kompromis. 3 maksymalizuje kompresję kosztem czasu przetwarzania.

Tryb pracy

Stratność - lossy

Zakres 0 do 200. 0 oznacza tryb bezstratny. Wartości 10 do 40 zwykle są bezpieczne i trudne do zauważenia. Powyżej 80 pojawiają się artefakty i wyraźne rozmycia. Parametr działa jak filtr wygładzający, który zmniejsza liczbę unikalnych wzorców między klatkami.

Jakość vs waga

Instrukcja użycia krok po kroku

  1. Wgraj pliki GIF przez wybór lub przeciągnij do wyznaczonego pola. Zobaczysz miniatury i rozmiary.
  2. Ustaw liczbę kolorów. Niższa wartość to większa oszczędność - testuj na podglądzie.
  3. Wybierz poziom optymalizacji. Startowo użyj 2. Dla maksymalnych zysków wybierz 3.
  4. Ustal stratność. Zostaw 0 jeśli chcesz zachować pełną jakość. Spróbuj 20 do 40 aby znacząco zmniejszyć wagę bez widocznego spadku jakości.
  5. Kliknij Uruchom kompresję i poczekaj aż status zaktualizuje się nad panelem.
  6. Pobierz zoptymalizowane pliki z tabeli wyników. Sprawdź kolumny przed i po oraz procent oszczędności.
  7. W razie potrzeby użyj Wyczyść wyniki aby zacząć nową serię.

Struktura interfejsu i tabela wyników

Podgląd Plik Rozmiar przed Rozmiar po Zaoszczędzono % Pobierz
Miniatura hero-animation.gif 4 512.00 KB 1 936.00 KB 2 576.00 KB 57.10% Link
Miniatura tutorial-step2.gif 2 048.00 KB 1 126.40 KB 921.60 KB 45.00% Link

Parametry wejściowe, limity i walidacja

Pole Opis Zakres lub format
colors Docelowa liczba kolorów w palecie 2 do 256
optimize_level Intensywność optymalizacji klatek 1 do 3
lossy Poziom stratności dla dodatkowej redukcji 0 do 200
max_file_size_mb Maksymalna waga pojedynczego pliku do akceptacji domyślnie 50 MB
local_files Lista przesłanych plików objętych kompresją mimetypes: image/gif

Wgląd w implementację

private function runGifsicle($in, $out) {
  $bin    = $this->gifsiclePath();
  if (!$bin || !is_file($in)) return false;

  $colors = max(2, min(256, (int)$this->colors));
  $opt    = max(1, min(3, (int)$this->optimize_level));
  $lossy  = max(0, min(200, (int)$this->lossy));

  $parts = [escapeshellcmd($bin), "--optimize={$opt}", "--colors={$colors}"];
  if ($lossy > 0) { $parts[] = "--lossy={$lossy}"; }
  $parts[] = escapeshellarg($in);
  $cmd = implode(" ", $parts) . " -o " . escapeshellarg($out);

  @shell_exec($cmd);
  return is_file($out) && filesize($out) > 0;
}
W addonie zastosowano zabezpieczenia zakresów wejściowych oraz unikanie błędów łączenia tablic w budowie komendy. Dzięki temu polecenie jest stabilne i przewidywalne w różnych konfiguracjach.

Dobre praktyki kompresji GIF

  • Redukuj paletę dopiero po szybkim podglądzie. Dla materiałów z gradientami trzymaj 128 do 256.
  • Wybieraj optymalizację 2 dla codziennych zadań. Poziom 3 rezerwuj dla ciężkich plików i finalnych buildów.
  • Lossy ustaw w przedziale 10 do 40. Powyżej 60 szybko rośnie liczba artefaktów i posteryzacji.
  • Przed eksportem z edytora zadbaj o liczbę klatek na sekundę. Mniej FPS to mniejsza waga i krótszy czas przetwarzania.
  • Jeśli to możliwe zamień GIF na MP4 lub WebM w serwisach wspierających wideo. Gdy wymagasz GIF, użyj tego kompresora aby zejść jak najniżej z wagą.

Bezpieczeństwo i prywatność

Pliki są przetwarzane lokalnie na serwerze. Tymczasowe kopie trafiają do katalogu Livewire, a wynik zapisywany jest na dysku publicznym w folderze narzędzia. Link służy do pobierania i można go usunąć po stronie projektu. Włącz rotację katalogu wyników w cronie aby ograniczyć retencję danych.

Najczęstsze pytania

Czy kompresja zmienia prędkość animacji

Nie. Narzędzie nie modyfikuje opóźnień między klatkami. Zmiany dotyczą palety kolorów i optymalizacji treści klatek.

Czy lossy zawsze pogarsza jakość

Tak, ale w kontrolowany sposób. Przy wartościach 10 do 30 pogorszenie jest trudne do zauważenia, a zysk w KB jest duży. Wyższe poziomy należy testować na docelowym tle i rozdzielczości.

Jakie oszczędności są typowe

Dla typowych gifów produktowych 30 do 60 procent. Dla screencastów 20 do 45 procent. Dla prostych ikon i loaderów 50 do 80 procent, zwłaszcza przy mniejszej palecie.

Co jeśli środowisko nie posiada gifsicle

Działa fallback do łańcucha ImageOptimizer. Wynik będzie mniej agresywny, ale wciąż zredukowany względem oryginału. Warto zainstalować gifsicle aby uzyskać pełnię możliwości.

Czy mogę ustawić różne parametry dla każdego pliku

Aktualny interfejs stosuje wspólne ustawienia do całej serii. Jeśli chcesz różnicować parametry, podziel pliki na partie i uruchom kompresję wielokrotnie.

Rozwiązywanie problemów

  • Wyraźne pasy kolorów po kompresji - podnieś liczbę kolorów albo zmniejsz lossy.
  • Słaba płynność - materiał wejściowy ma zbyt mało FPS. Kompresja tego nie poprawi. Rozważ ponowny eksport źródła.
  • Plik nie przechodzi walidacji - sprawdź typ MIME i maksymalny rozmiar. Domyślny limit to 50 MB.
  • Brak efektu redukcji - dla minimalnych gifów bez powtarzalnych klatek zysk może być niewielki. Użyj poziomu 3 i lekkiego lossy.
 
Efekt
Redukcja 30 do 60 procent dla typowych animacji
Kontrola
Paleta 2-256, optimize 1-3, lossy 0-200

To narzędzie upraszcza dystrybucję animacji w kanałach o ograniczonej przepustowości. Zawsze porównuj wynik z oryginałem na docelowym tle i rozdzielczości.

Uruchom kompresję