PHP Conference Japan 2024

Imagick::getIteratorIndex

(PECL imagick 2, PECL imagick 3)

Imagick::getIteratorIndex获取当前活动图像的索引

描述

public Imagick::getIteratorIndex(): int

返回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();
?>

参见

添加笔记

用户贡献笔记 2条笔记

1
Michael O&#39;Connell
9年前
这也可以检索Imagick实例当前所在的多分页文档(即PDF、PS)文件的页码。对于PDF,默认情况下似乎设置为最后一页。
0
holdoffhunger at gmail dot com
12年前
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");

?>
To Top