是否有一种方法可以使用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