# Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitor — Définit une fonction de rappel à appeler pendant le traitement

### Description

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

Définit une fonction de rappel qui sera appelée pendant le traitement de l'image Imagick.

### Liste de paramètres

`callback`

  La fonction de progression à appeler. Elle doit retourner true si le traitement de l'image doit continuer, ou false si elle doit être annulée. Le paramètre offset indique la progression et le paramètre span indique la quantité totale de travail à effectuer.

  callback ( mixed `$offset` , mixed `$span` ): bool
  Attention

  Les valeurs passées à la fonction de rappel ne sont pas cohérentes. En particulier, le paramètre span peut augmenter pendant le traitement de l'image. En raison de cela, le calcul du pourcentage complet d'une opération d'image n'est pas trivial.

### Valeurs de retour

Retourne `true` en cas de succès.

### Exemples

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