获取GIF帧数,而无需解码所有数据



是否有一种方法可以使用ImageMagick获取图像帧的数量,而无需解码所有数据列表<图像>喜欢读数的方式?

magick 库具有读取标题信息的Magick::Image.ping方法&不是图像数据。

正如Geemack指出的那样,您只需要读取最后一个帧(带有[-1]后缀(,然后进行调整。

Magick::Image temp;
size_t total_frames = 0;
temp.ping("animation.gif[-1]");
total_frames = temp.scene() + 1;

使用命令行中使用ImageMagick 6

convert input.gif[-1] -format %[scene] info:

应该仅读取最后一个帧并输出其帧号,该数字比框架总数少一个。

您可以通过一个小技巧设置和读取这样的假分本信息来使IM添加一个数字...

convert input.gif[-1] -set page +%[scene] -format %[fx:page.x+1] info:

应该输出GIF中的帧总数。

如果使用IM版本7使用" magick"而不是"转换"。

ImageMagick中的另一种方式,至少在Unix Systems,在命令行中,您可以执行以下从ImageMagick到WC的管道(Word Count,可以使用WC -L计数行计数(:

创建3帧GIF

convert logo: logo: logo: logo.gif


获取帧数

convert logo.gif -format "%nn" info: | wc -l 
       3


请参阅https://imagemagick.org/script/escape.php

的字符串格式