処理中に呼び出されるコールバックを設定する

# Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitor — 処理中に呼び出されるコールバックを設定する

### 説明

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

Imagick 画像の処理中に呼び出されるコールバックを設定します。

### パラメータ

`callback`

  呼び出す進捗関数。画像処理を続行する場合は true を、キャンセルする場合は false を返す必要があります。offset パラメータは進捗状況を示し、span パラメータは必要な作業の総量を示します。

  function callback ( mixed `$offset` , mixed `$span` ): bool
  警告

  コールバック関数に渡される値は一定ではありません。特に span パラメータは画像処理中に増加することがあります。このため、画像操作の完了率を計算することは単純ではありません。

### 戻り値

成功した場合に `true` を返します。

### 例

例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);
                }
            }

    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open