Jak mogę podzielić animowany plik .gif na jego ramki składowe?


44

Jak mogę łatwo podzielić animowany plik .gif? Chcę zobaczyć każdą ramkę.

Naprawdę wolałbym nie eksportować każdej ramki do katalogu. Jeśli to możliwe, chciałbym je wyświetlić indywidualnie w jednej aplikacji.

Czy jest to możliwe w systemie Linux?

Odpowiedzi:


52

Spróbuj otworzyć je za pomocą The Gimp; Wierzę, że otworzą animowane gify z jedną warstwą na ramkę.

Mówisz, że nie chcesz zrzucać wszystkich ramek do plików w katalogu, ale powiem ci jak to zrobić :) zainstaluj ImageMagick lub graphicsmagick, a następnie:

dla ImageMagick:

convert animation.gif target.png

dla grafiki:

gm convert animation.gif target.png

zapisze ramki do target0.png, target1.png, ... i tak dalej. Następnie możesz wejść do katalogu i uruchomić eog, pokażą Ci wszystkie ramki w tej samej aplikacji. Kiedy już nie potrzebujesz ramek, po prostu rm target*.png.


imagemagick jest po prostu niesamowity !!
fccoelho,

1
Konwersja imagemagic nie powiodła się dla mnie, ponieważ wydaje się, że każdy obraz gif był reprezentowany jako nowa przezroczysta warstwa tła, a konwersja dała te przezroczyste warstwy: upload.wikimedia.org/wikipedia/commons/5/5d/AstarExample.gif
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Otworzyłem gif w GIMP, ale wciąż nie wiem, jak oglądać każdą klatkę osobno - widzę tylko ostatnią klatkę. Pracuję z tą animacją: /tmp/Non-Native-American-Nations-Territorial-Claims-over-NAFTA-countries-1750-2008.gif
nealmcb

3
GraphicsMagick musi mieć formę gm convert some-image.gif +adjoin some-image%d.pngdo działania. Lub w gm convert some-image.gif -coalesce +adjoin some-image%d.pngprzypadku ramek pomocniczych o różnych rozmiarach i różnych przesunięciach.
l --marc l

1
Określony convertpomija -coalesceopcję, która jest wymagana do tego, czego oczekiwałby użytkownik.
Marcus

41

Jeśli różne ramki mają przezroczyste obszary i budują się na sobie, możesz użyć convertpolecenia z -coalesceopcją „ ”, aby utworzyć zestaw plików target-0.png, target-1.png itp., Z których każda łączy sekwencję poprzednich zdjęcia:

convert -coalesce animation.gif target.png

1
Świetny komentarz, ale wymaga wyjaśnienia. Zasadniczo rozwiązuje problem, jaki @cirosantilli miał z ImageMagick zwracającym to, co wyglądało na podobne aktualizacje do określonych obszarów ekranu. -coalesce scala te aktualizacje, aby uzyskać ukończone renderowanie.
AnthonyVO

3
Należy zauważyć, że (od wersji 6.7.7 ImageMagick) wydaje się, że występuje przeciek pamięci: nie próbuj robić -coalescedługich .gifscreencastów , prawdopodobnie zużyje całą dostępną pamięć i prawdopodobnie zawiesi cały system.
leftaroundabout

4
możesz określić nazwy plików wyjściowych za pomocą czegoś takiego:convert -coalesce animation.gif target.%04d.png
Trevor Boyd Smith

2

dla mnie, z ImageMagick(Informacje o wersji: 6.8.9-9 Q16 x86_64 2017-07-31)

convert gif.gif gif.pdf

tworzy plik pdf z każdą stroną będącą ramką wejściowego gif, a następnie możesz po prostu przeglądać ramki w wybranej aplikacji do przeglądania plików pdf


To wydaje się zbyt skomplikowane i w przeciwieństwie do tego, czego chce OP.
David Foerster,

Aby uzyskać każdą ramkę jako stronę w pliku .pdf, to świetny pomysł, po prostu weź pod uwagę, że ta metoda może być błędna i musisz dostosować aplikację .
loved.by.Jesus

2

Użyj mpv. Otwórz go na pulpicie. Przeciągnij do niego gif. Zrób zrzut ekranu żądanej / pojedynczej klatki za pomocą klawisza s. Możesz nawet zatrzymać, jeśli twój gif jest szybki. Bardzo szybki sposób.

===========

możesz najpierw skorzystać z tych ustawień [po ustawieniu nie musisz tego robić ponownie] :

gedit ~/.config/mpv/mpv.conf

i wprowadź i zapisz:

--screenshot-format Dostępne opcje: jpg jpeg png (domyślnie: jpg)

dla najwyższej jakości png:

--screenshot-format=png
--screenshot-png-compression=9

lub jeśli chcesz jpg

--screenshot-jpeg-quality Liczba całkowita (od 0 do 100) (domyślnie: 90)

Użyj mpv --list-options dla innych szczegółów


Cześć :) powrót andrew.46. spróbowałem Gimp i się sfrustrowałem. nie ma wiele rzeczy, których
MPV
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.