Imagick::setProgressMonitor

(No version information available, might only be in Git)

Imagick::setProgressMonitorDescription

Descripción

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

Establece una retrollamada que será invocada durante el procesamiento de la imagen Imagick.

Parámetros

callback

La función de progreso a llamar. Debe devolver true si el procesamiento de la imagen debe continuar, o false si debe ser cancelado. El parámetro 'offset' indica el progreso y el parámetro 'span' indica la cantidad total de trabajo necesario para realizarla.

callback ( mixed $offset , mixed $span ) : bool
Precaución

Los valores pasados a la función de retrollamada no son consistentes. En particular, el parámetro 'span' puede aumentar durante el procesamiento de la imagen. A causa de esto, el cálculo del procentaje completado de una operación de imagen no es trivial.

Valores devueltos

Ejemplos

Ejemplo #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 "Processing reached 20%";
                    return 
false;
                }

                
$nowTime time();

                if (
$nowTime $startTime 5) {
                    
$abortReason "Image processing took more than 5 seconds";
                    return 
false;
                }
                if ((
$offset 5) == 0) {
                    echo 
"Progress: $offset / $span <br/>";
                }
                return 
true;
            };

            
$imagick->setProgressMonitor($callback);

            
$imagick->waveImage(215);

            echo 
"Data len is: ".strlen($imagick->getImageBlob());
        }
        catch(\
ImagickException $e) {
            if (
$abortReason != null) {
                echo 
"Image processing was aborted: ".$abortReason."<br/>";
            }
            else {
                echo 
"ImagickException caught: ".$e->getMessage()." Exception type is ".get_class($e);
            }
        }

?>