PHP 8.4.0 RC2 available for testing

Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitorУстанавливает callback-функцию, которая будет вызываться во время обработки изображения Imagick

Описание

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

Устанавливает callback-функцию, которая будет вызываться во время обработки изображения Imagick.

Список параметров

callback

Callback-функция прогресса для вызова. Она должна вернуть true, если обработка изображения должна продолжаться, или false, если её нужно отменить. Параметр offset указывает прогресс, а параметр span - общий объем работы, который необходимо выполнить.

callback ( mixed $offset , mixed $span ): bool
Предостережение

Значения, передаваемые в callback-функцию, не согласованы. В частности, параметр 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);
}
}

?>

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top