Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitorDefine uma função de retorno a ser chamada durante o processamento

Descrição

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

Define uma função de retorno a ser chamada durante o processamento da imagem Imagick.

Parâmetros

callback

A função de progresso a ser chamada. Deve retornar true se o processamento da imagem continuar ou false se for cancelado. O parâmetro 'offset' indica o progresso e o parâmetro 'span' indica a quantidade total de trabalho necessário a ser feito.

callback ( mixed $offset , mixed $span ): bool
Caution

Os valores passados ​​para a função de retorno não são consistentes. Em particular, o parâmetro 'span' pode aumentar durante o processamento da imagem. Por causa disso, calcular a porcentagem concluída de uma operação de imagem não é trivial.

Valor Retornado

Retorna true em caso de sucesso.

Exemplos

Example #1 Exemplo de 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 = "Processamento alcançou 20%";
                return false;
            }

            $nowTime = time();

            if ($nowTime - $startTime > 5) {
                $abortReason = "Processamento de imagem levou mais de 5 segundos";
                return false;
            }
            if (($offset % 5) == 0) {
                echo "Progresso: $offset / $span <br/>";
            }
            return true;
        };

        $imagick->setProgressMonitor($callback);

        $imagick->waveImage(2, 15);

        echo "Comprimento dos dados é: ".strlen($imagick->getImageBlob());
    }
    catch(\ImagickException $e) {
        if ($abortReason != null) {
            echo "Processamento de imagem foi abortado: ".$abortReason."<br/>";
        }
        else {
            echo "ImagickException capturada: ".$e->getMessage()." Tipo da exceção é ".get_class($e);
        }
    }

?>