# Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitor — Description

### Descripción

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

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

Devuelve `true` en caso de éxito.

### 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(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);
}
}
?>`