Twórz i edytuj animowane pliki GIF z wiersza poleceń w Ubuntu
Animowane GIF-y stały się w ciągu ostatnich kilku lat bardzo popularne, a ich popularność rośnie z każdym dniem. Nie zgadzasz się? Pomyśl o tym: każdego dnia na Tumblrze publikowanych jest aż ponad 23 miliony GIF-ów. Najwyraźniej istnieje publiczność dla tego formatu obrazu.
Czy to zachęca Cię do tworzenia GIF-ów? Jeśli tak, z przyjemnością dowiesz się, że istnieją różne edytory GIF oparte na graficznym interfejsie użytkownika, które działają na różnych platformach systemów operacyjnych. Jeśli jednak korzystasz z Linuksa i szukasz narzędzia wiersza poleceń do tego zadania, nie szukaj dalej, ponieważ omówimy Gifsicle - narzędzie, które pozwala łatwo bawić się animowanymi plikami GIF.
Uwaga: we wszystkich przykładach wymienionych w tym artykule użyto wersji 1.78 programu Gifsicle.
Gify
Gifsicle to narzędzie wiersza poleceń umożliwiające tworzenie, edytowanie i uzyskiwanie informacji o obrazach i animacjach GIF. Według oficjalnej strony narzędzia, Gifsicle oferuje kilka funkcji, w tym optymalizację obrazu, a także kontrolę nad przeplotem, komentarzami, zapętleniem i przezroczystością. „Tworzy dobrze zachowujące się pliki GIF: usuwa zbędne kolory, używa lokalnych tabel kolorów tylko wtedy, gdy jest to absolutnie konieczne (lokalne tabele kolorów marnują miejsce i mogą powodować artefakty podczas oglądania) itp.”
Pobieranie i instalacja
W systemie Ubuntu (a także innych systemach opartych na Debianie) możesz łatwo pobrać i zainstalować narzędzie Gifsicle za pomocą następującego polecenia:
sudo apt-get install gifsicle
Alternatywnie możesz także zbudować je od podstaw, korzystając z kodu źródłowego lub skorzystać z gotowego pliku binarnego — oba można pobrać z oficjalnej strony internetowej narzędzia.
Utwórz animowany GIF za pomocą Gifsicle
Załóżmy, że masz kilka plików jpg i chcesz utworzyć z nich animowany plik gif. Oto jak to zrobić:
Ponieważ polecenie gifsicle działa tylko na plikach gif, najpierw musisz przekonwertować wszystkie pliki .jpg do formatu .gif za pomocą polecenia convert:
convert [input-file-name].jpg [output-file-name].gifJeśli liczba plików jpg jest duża, możesz użyć następującego polecenia, aby przekonwertować je wszystkie:
convert '*.jpg[widht, for ex: 300x]' resized%03d.gifPo zakończeniu konwersji z jpg na gif ogólne polecenie łączenia poszczególnych gifów w ostateczną animację wygląda następująco:
gifsicle [speed of animation] [number of times to loop] [input jpgs] > output.gifW powyższym poleceniu „szybkość animacji” można ustawić za pomocą flagi --delay, natomiast „liczbę powtórzeń” można ustawić za pomocą flagi --loopcount flaga.
Na przykład miałem następującą grupę obrazów jpg.
Oto polecenie, którego użyłem do stworzenia animowanego gifa z powyższych obrazów:
gifsicle --delay=80 --loopcount=forever *.gif>out.gifA oto out.gif.
Należy pamiętać, że wartość --delay reprezentuje opóźnienie pomiędzy klatkami w setnych części sekundy. Użyłem także „na zawsze” jako wartości flagi --loopcount. Ma to na celu zapewnienie, że animacja się nie zatrzyma. Możesz użyć dowolnej wartości całkowitej, jeśli chcesz, aby animacja była ograniczona do tej liczby zliczeń.
Wyodrębnij pojedyncze klatki
Gifsicle pozwala także łatwo wyodrębnić pojedyncze klatki z animowanego GIF-a. Oto przykład jak to zrobiłem:
gifsicle out.gif '#0' > first-frame.gifPowyższe polecenie wyodrębniło pierwszą klatkę z animowanego pliku out.gif. Po prostu zmieniałem wartość całkowitą po „#” i nazwie pliku wyjściowego i udało mi się wyodrębnić wszystkie klatki z pliku out.gif.
Jeśli liczba klatek animowanego gifa jest dość duża, a chcesz wyodrębnić je wszystkie, to - co jest całkiem zrozumiałe - niepraktyczne będzie wielokrotne ręczne uruchamianie powyższego polecenia. W takim przypadku możesz uruchomić polecenie w pętli ze skryptu powłoki.
Kolejną rzeczą, o której warto wspomnieć, jest to, że można również używać wartości ujemnych z „#”. Wartości ujemne odnoszą się do klatek od końca. Na przykład „#-1” wyświetli ostatnią klatkę.
Edytuj animowany GIF
Dzięki Gifsicle możesz także łatwo edytować animowane pliki GIF. Na przykład poniższe polecenie tworzy nowy plik „out.gif”, który jest niczym innym jak starym plikiem „out.gif”, którego pierwsza klatka jest zastąpiona połączeniem „a.gif” i „b.gif”:
gifsicle --delay=80 --loopcount=forever -b out.gif --replace '#0' a.gif b.gifPodobnie możesz użyć flagi --delete, aby usunąć ramki. Na przykład poniższe polecenie usuwa pierwszą klatkę z pliku „out.gif”, a wynikowy plik GIF ma postać „out-new.gif”:
gifsicle out.gif --delete '#0' > out-new.gifMożesz nie tylko usuwać i zastępować, ale także dodawać nowe klatki do animowanego pliku GIF. Na przykład --append umożliwia dodanie klatek na końcu animowanego GIF-a. Oto przykład:
gifsicle out-new.gif --append a.gif > out-new-appended.gifPowyższe polecenie dołączy ramkę „a.gif” do animowanego pliku „out-new.gif” i wygeneruje animowany plik „out-new-appended.gif” jako wynik.
Możesz także użyć flagi --insert-before, aby dodać klatkę (lub wiele klatek) w dowolnym miejscu istniejącego animowanego gifa.
Transformacja obrazu
Gifsicle oferuje również pewne opcje transformacji obrazu. Możesz na przykład użyć tego narzędzia do zmiany rozmiaru obrazów GIF. Możesz użyć flagi --resize [width]x[height], aby zmienić rozmiar obrazu GIF do określonej szerokości i wysokości. Ze strony podręcznika polecenia: „Szerokość lub wysokość może być podkreśleniem „_”. Jeśli argumentem jest szerokośćx_, wyjściowy plik GIF jest skalowany do szerokości w pikselach bez zmiany jego proporcji.”
Oto jak wykonałem operację zmiany rozmiaru na „out.gif”:
gifsicle out.gif --resize 150x_ > out-resize.gifPowyższe polecenie utworzyło plik o nazwie „out-resize.gif”, który był niczym innym jak plikiem „out.gif” o zmienionym rozmiarze i szerokości 150 pikseli.
Wniosek
Gifsicle może nie jest zbyt popularnym narzędziem do tworzenia/edycji GIF-ów, ale z pewnością jest bardzo przydatny. Pozwólcie, że wyjaśnię, że wszystko, co tutaj omówiliśmy, to tylko wierzchołek góry lodowej, ponieważ narzędzie oferuje mnóstwo funkcji/opcji. Myślę, że warto spróbować - więcej informacji znajdziesz tutaj.


