(PECL imagick 3 >= 3.3.0)
Imagick::setProgressMonitor — Description
Establece una retrollamada que será invocada durante el procesamiento de la imagen Imagick.
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.
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.
Devuelve true
en caso de éxito.
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(2, 15);
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);
}
}
?>