(PECL imagick 3 >= 3.3.0)
Imagick::setProgressMonitor — Définit une fonction de rappel à appeler pendant le traitement
Définit une fonction de rappel qui sera appelée pendant le traitement de l'image Imagick.
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.
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.
Retourne true
en cas de succès.
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);
}
}
?>