PHP Conference Japan 2024

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 = "處理進度達到 20%";
return
false;
}

$nowTime = time();

if (
$nowTime - $startTime > 5) {
$abortReason = "影像處理時間超過 5 秒";
return
false;
}
if ((
$offset % 5) == 0) {
echo
"進度:$offset / $span <br/>";
}
return
true;
};

$imagick->setProgressMonitor($callback);

$imagick->waveImage(2, 15);

echo
"資料長度為:".strlen($imagick->getImageBlob());
}
catch(
\ImagickException $e) {
if (
$abortReason != null) {
echo
"影像處理已中止:".$abortReason."<br/>";
}
else {
echo
"已捕獲 ImagickException:".$e->getMessage()." 例外類型為 ".get_class($e);
}
}

?>

新增筆記

使用者貢獻筆記

此頁面沒有使用者貢獻筆記。
To Top