Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitor设置在处理过程中调用的回调

描述

public Imagick::setProgressMonitor(callable $callback): bool

设置一个回调函数,该函数将在处理 Imagick 图像时调用。

参数

callback

要调用的进度函数。它应该返回 true 如果图像处理应该继续,或者返回 false 如果应该取消。offset 参数表示进度,span 参数表示需要完成的总工作量。

callback ( mixed $offset , mixed $span ): bool
注意

传递给回调函数的值并不一致。特别是 span 参数在图像处理过程中可能会增加。因此,计算图像操作的完成百分比并非易事。

返回值

成功时返回 true

范例

范例 #1 Imagick::setProgressMonitor()

<?php
$abortReason
= null;

try {
$imagick = new \Imagick(realpath($this->control->getImagePath()));
$startTime = time();

$callback = function ($offset, $span) use ($startTime, &$abortReason) {
if (((
100 * $offset) / $span) > 20) {
$abortReason = "Processing reached 20%";
return
false;
}

$nowTime = time();

if (
$nowTime - $startTime > 5) {
$abortReason = "Image processing took more than 5 seconds";
return
false;
}
if ((
$offset % 5) == 0) {
echo
"Progress: $offset / $span <br/>";
}
return
true;
};

$imagick->setProgressMonitor($callback);

$imagick->waveImage(2, 15);

echo
"Data len is: ".strlen($imagick->getImageBlob());
}
catch(
\ImagickException $e) {
if (
$abortReason != null) {
echo
"Image processing was aborted: ".$abortReason."<br/>";
}
else {
echo
"ImagickException caught: ".$e->getMessage()." Exception type is ".get_class($e);
}
}

?>

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top