如果你想获取动画(GIF)帧的数量,你需要使用 Imagick::getNumberImages()
(PECL imagick 2, PECL imagick 3)
Imagick::getImageIterations — 获取图像迭代次数
此函数没有参数。
以整数形式返回图像迭代次数。
在错误时抛出 ImagickException。
通过使用 PHP 函数 getImageIterations,您将收到一个值,表示图像的动画性质。对于非动画静止图像(例如 .BMP 或 .JPEG 文件),您将收到 '0',对于动画图像(例如动画 .GIF 文件),您将收到 '1'。
在广泛使用后,我一直无法从该函数获得任何其他结果。ImageMagick 用户组中的一些讨论说,迭代次数应该表示动画 .Gif 文件重复的次数。但是,可能是现代浏览器将该值默认为无穷大,或者该 ImageMagick 功能仅在 Linux 命令行下可用。在该讨论组中查看更多内容:http://studio.imagemagick.org/pipermail/magick-users/2002-October/005814.html
以及一些示例代码
<?php
// 作者:[email protected]
// Imagick 类型
// ---------------------------------------------
$imagick_type = new Imagick();
// 打开文件
// ---------------------------------------------
$file_to_grab = "image_workshop_directory/test.gif";
$file_handle_for_viewing_image_file = fopen($file_to_grab, 'a+');
// 获取文件
// ---------------------------------------------
$imagick_type->readImageFile($file_handle_for_viewing_image_file);
// 获取图像迭代次数
// (检测动画图像与非动画图像)
// ---------------------------------------------
$image_iterations = $imagick_type->getImageIterations();
// 打印解释的迭代值
// ---------------------------------------------
if($image_iterations == 1)
{
print("$file_to_grab *是* 动画图像.");
}
else
{
print("$file_to_grab *不是* 动画图像.");
}
?>