Czy istnieje polecenie, aby uzyskać liczbę ramek w gifie?

23

Czy istnieje polecenie, aby uzyskać liczbę ramek w gifie? Mam kilka gifów i chcę je przekonwertować na tablice, ale chcę ograniczyć tablicę i jej strukturę w oparciu o liczbę ramek w dowolnym losowym gifie, którym przypadkiem nakarmiłem mój program. Myślałem, że imagemagick może mieć taką opcję, ale jeszcze jej nie znalazłem.

j0h
źródło

Odpowiedzi:

23

Jeśli masz zainstalowany ImageMagick, możesz użyć jego identifypolecenia w następujący sposób

identify /path/to/image.gif

Otrzymasz szczegółowe informacje o każdej ramce.

Jak sugeruje steeldriver , liczbę obrazów w sekwencji można uzyskać bezpośrednio przy użyciu specyfikatora %nformatu wyjściowego, jednak raczej denerwujące wydaje się drukowanie go raz dla każdego obrazu. Aby uzyskać pojedynczy numer, możesz to zrobić

identify -format "%n\n" path/to/file.gif | head -1
pomsky
źródło
2
Oopsie. Byłem pierwszym, który opublikował odpowiedź, a następnie zaktualizowałem ją 3 razy, nie widząc twojej odpowiedzi, która jest dość podobna do mojej ostatniej wersji ...
WinEunuuchs2Unix
18

Exiftool wyświetli liczbę klatek jako część swoich obszernych wyników.

To polecenie i wyjście pliku Animated Gif:

$ exiftool -b -FrameCount giphy.gif
33

Pełna wydajność exiftool na gif:

$ exiftool giphy.gif
ExifTool Version Number         : 10.10
File Name                       : giphy.gif
Directory                       : .
File Size                       : 2.1 MB
File Modification Date/Time     : 2018:04:22 21:00:42-04:00
File Access Date/Time           : 2018:04:22 21:01:03-04:00
File Inode Change Date/Time     : 2018:04:22 21:00:52-04:00
File Permissions                : rw-rw-r--
File Type                       : GIF
File Type Extension             : gif
MIME Type                       : image/gif
GIF Version                     : 89a
Image Width                     : 500
Image Height                    : 281
Has Color Map                   : Yes
Color Resolution Depth          : 7
Bits Per Pixel                  : 7
Background Color                : 127
Animation Iterations            : Infinite
XMP Toolkit                     : Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27
Creator Tool                    : Adobe Photoshop CS6 (Macintosh)
Instance ID                     : xmp.iid:C312DB1DA6A311E5B8F5D2BA262E999D
Document ID                     : xmp.did:C312DB1EA6A311E5B8F5D2BA262E999D
Derived From Instance ID        : xmp.iid:C312DB1BA6A311E5B8F5D2BA262E999D
Derived From Document ID        : xmp.did:C312DB1CA6A311E5B8F5D2BA262E999D
Frame Count                     : 33
Duration                        : 2.31 s
Image Size                      : 500x281
Megapixels                      : 0.141
LD James
źródło
2
Nie musisz grep exiftoolgenerować danych wyjściowych: każde pole można wydrukować niezależnie: exiftool dev/slack-emojinator/gifs/yj_batsu.gif -FrameCounti exiftool dev/slack-emojinator/gifs/yj_batsu.gif -b -FrameCountdla samej wartości
muru
@muru Dzięki za informację. Naprawię odpowiedź.
LD James
8

Polecenie jednowierszowe

Zainspirowany tym artykułem użyj tego polecenia z jedną linią:

$ identify drop_caches.gif | wc -l
128

Aby uzyskać więcej informacji, użyj:

identify -verbose filename.gif

Ta strona internetowa pozwala przesyłać .gifi analizować ją na wiele sposobów, w tym liczbę klatek:

ezgif.png


convertDostarczone przez Obrazek Magii będzie konwertować .gifdo poszczególnych .pngzdjęć po jednym dla każdej klatki:

$ convert -verbose -coalesce drop_caches.gif drop_caches.png
drop_caches.gif[0] GIF 470x940 470x940+0+0 8-bit sRGB 256c 177KB 0.090u 0:00.099
drop_caches.gif[1] GIF 13x1 470x940+398+704 8-bit sRGB 256c 177KB 0.080u 0:00.089
drop_caches.gif[2] GIF 306x620 470x940+144+130 8-bit sRGB 256c 177KB 0.080u 0:00.089
    (... SNIP ...)
drop_caches.gif=>drop_caches-125.png[125] GIF 470x940 470x940+0+0 8-bit sRGB 255c 50.3KB 27.100u 0:24.890
drop_caches.gif=>drop_caches-126.png[126] GIF 470x940 470x940+0+0 8-bit sRGB 254c 48.9KB 27.320u 0:25.089
drop_caches.gif=>drop_caches-127.png[127] GIF 470x940 470x940+0+0 8-bit sRGB 254c 48.9KB 27.480u 0:25.269
WinEunuuchs2Unix
źródło
7

Sposób FFmpeg:

ffprobe -v warning -show_frames qqq.gif | grep -c '\[/FRAME\]'

Wideo w formacie Gif to wideo, więc pomocne mogą być również narzędzia analizy wideo.

Vi.
źródło
Z mojego doświadczenia wynika, że ​​kompilacja FFMPEG w celu zaspokojenia moich potrzeb to dziwka, ale doceniam czas, jaki upłynęło, aby udzielić odpowiedzi. Mam nadzieję, że ktoś uzna ją za przydatną
j0h,
@ j0h, Czy FFmpeg pod warunkiem dystrybucji nie działa tylko w tym przypadku?
Vi.
5

Możesz także użyć lesspolecenia, jeśli masz ImageMagickzainstalowany.

less +G image.gif

Całkowita liczba klatek jest ostatnia #w nawiasach image.gif[#]...(od 0); Lub policz z:

less image.gif | wc -l
αғsнιη
źródło
intrygujące .......
j0h