(PECL imagick 3 >= 3.3.0)
Imagick::setProgressMonitor — Устанавливает callback-функцию, которая будет вызываться во время обработки изображения Imagick
Устанавливает callback-функцию, которая будет вызываться во время обработки изображения Imagick.
callbackCallback-функция прогресса для вызова. Она должна вернуть true, если обработка изображения должна продолжаться, или false, если её нужно отменить. Параметр offset указывает прогресс, а параметр span - общий объем работы, который необходимо выполнить.
Значения, передаваемые в 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);
            }
        }
?>