这还将检索 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");
?>