Existe um comando para obter o número de quadros em um gif?

18

Existe um comando para obter o número de quadros em um gif? Eu tenho alguns gifs e quero convertê-los em arrays, mas quero limitar o array e a estrutura do array com base no número de quadros em qualquer gif aleatório que aconteça para alimentar meu programa. Eu estava pensando imagemagick pode ter essa opção, mas eu não encontrei ainda.

    
por j0h 23.04.2018 / 02:20

5 respostas

22

Se você tiver o ImageMagick instalado, poderá usar o comando identify da seguinte forma

identify /path/to/image.gif

Você receberá detalhes de cada quadro.

Como sugerido por steeldriver , você pode obter diretamente o número de imagens na sequência usando o formato de saída %n especificador, por mais irritante que pareça imprimi-lo uma vez para cada imagem. Para obter um único número, você poderia fazer

identify -format "%n\n" path/to/file.gif | head -1
    
por pomsky 23.04.2018 / 02:31
17

Exiftool listará a Frame Count como parte de sua ampla produção.

Este é um comando e uma saída de um arquivo Gif animado:

$ exiftool -b -FrameCount giphy.gif
33

Saída exiftool completa no 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
    
por L. D. James 23.04.2018 / 03:05
7

Comando de uma linha

Inspirado por este artigo , use este comando de uma linha:

$ identify drop_caches.gif | wc -l
128

Para mais detalhes, use:

identify -verbose filename.gif

Este site permite que você envie seu .gif e analise de várias maneiras, incluindo o número de quadros nele:

O convert fornecido por Image Magic converterá seu .gif em .png imagens individuais uma para cada quadro:

$ 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
    
por WinEunuuchs2Unix 23.04.2018 / 02:29
5

Caminho FFmpeg:

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

O vídeo gif é um vídeo, por isso as ferramentas de análise de vídeo também podem ajudar.

    
por Vi. 23.04.2018 / 09:27
5

Você também pode usar o comando less se tiver ImageMagick instalado.

less +G image.gif

O total de quadros é o último # entre parênteses em image.gif[#]... (a partir de 0); Ou conte com:

less image.gif | wc -l
    
por devWeek 23.04.2018 / 11:56