这也可以检索Imagick实例当前所在的多分页文档(即PDF、PS)文件的页码。对于PDF,默认情况下似乎设置为最后一页。
(PECL imagick 2, PECL imagick 3)
Imagick::getIteratorIndex — 获取当前活动图像的索引
返回Imagick对象中当前活动图像的索引。如果Imagick已针对ImageMagick 6.2.9或更高版本编译,则此方法可用。
此函数没有参数。
返回一个整数,包含图像在栈中的索引。
错误时抛出ImagickException。
示例 #1 使用 Imagick::getIteratorIndex()
创建图像,设置和获取迭代器索引
<?php
$im = new Imagick();
$im->newImage(100, 100, new ImagickPixel("red"));
$im->newImage(100, 100, new ImagickPixel("green"));
$im->newImage(100, 100, new ImagickPixel("blue"));
$im->setIteratorIndex(1);
echo $im->getIteratorIndex();
?>
ImageMagick函数的getIteratorIndex函数适用于任何类型的图像,但它是为测量动画.gif文件的帧数而构建的。对于非动画图像文件,如常规的.bmp或.jpg文件,此函数始终返回数字“0”,这意味着只有一帧。此函数从零开始计数,因此具有五个不同帧的.gif文件将返回“4”。高度重复的,但迷幻的动画GIF通常在10到30帧之间,但只是一个视频片段转换为数据文件的.gif文件可能有数百帧。
根据维基百科(在“图形交换格式”的文章中),动画GIF图像使用GIF标准,“允许文件中各种图像(帧)以时间延迟绘制”。此函数不会获得每一帧之间延迟的时间量,但会给出.gif文件中唯一帧的数量。这将告诉您动画的复杂程度。
您的“getIteratorIndex”函数不起作用吗?尝试“getImageIndex”函数,它产生完全相同的结果。
一些示例代码
<?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_iterator_index = $imagick_type->getIteratorIndex();
// 打印图像类型值
// ---------------------------------------------
print("GIF文件中唯一帧数: $image_iterator_index");
?>