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(215);

            echo 
"Длина данных: ".strlen($imagick->getImageBlob());
        }
        catch(\
ImagickException $e) {
            if (
$abortReason != null) {
                echo 
"Обработка изображения была прервана: ".$abortReason."<br/>";
            }
            else {
                echo 
"Поймано исключение ImagickException: ".$e->getMessage()." Тип исключения - ".get_class($e);
            }
        }

?>

add a note add a note

User Contributed Notes

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