Imagick::floodFillPaintImage

対象にマッチする任意のピクセルの値を変更する

説明

public bool Imagick::floodFillPaintImage(
    mixed $fill,
    float $fuzz,
    mixed $target,
    int $x,
    int $y,
    bool $invert,
    int $channel = Imagick::CHANNEL_DEFAULT
)

対象にマッチするピクセルとその直接の近傍の任意のピクセルの色の値を変更します。 このメソッドは、廃止予定の Imagick::paintFloodFillImage を置き換えるものです。 このメソッドは、ImageMagick バージョン 6.3.8 以降で Imagick をコンパイルした場合に使用可能です。

パラメータ

fill

塗りつぶし色を表す ImagickPixel オブジェクトあるいは文字列。

fuzz

あいまいさをあらわす量。たとえば、これを 10 に設定すると、 赤色の値が 100 の色と 102 の色は同じものとみなされます。

target

対象の色を表す ImagickPixel オブジェクトあるいは文字列。

x

開始位置の X 座標。

y

開始位置の Y 座標。

invert

true の場合は、対象の色にマッチしない任意のピクセルをペイントします。

channel

そのモードで有効なチャネル定数を指定します。 複数のチャネルを適用するには、チャネル定数 をビット演算子で組み合わせます。デフォルトは Imagick::CHANNEL_DEFAULT です。 チャネル定数 の一覧を参照ください。

戻り値

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

例1 Imagick::floodfillPaintImage の例

<?php

/* 新しい imagick オブジェクトを作ります */
$im = new Imagick();

/* 赤、緑、青の画像を作ります */
$im->newImage(100, 50, "red");
$im->newImage(100, 50, "green");
$im->newImage(100, 50, "blue");

/* 画像をひとつにまとめます */
$im->resetIterator();
$combined = $im->appendImages(true);

/* この時点の画像を比較用に保存します */
$combined->writeImage("floodfillpaint_intermediate.png");

/* 塗りつぶす対象となるピクセル */
$x = 1;
$y = 1;

/* 塗りつぶす色を取得します */
$target = $combined->getImagePixelColor($x, $y);

/* 1,1 の一にあるピクセルと、対象の色にマッチするすべての
   近傍ピクセルを塗りつぶします */
$combined->floodfillPaintImage("black", 1, $target, $x, $y, false);

/* 結果を保存します */
$combined->writeImage("floodfillpaint_result.png");
?>

上の例の出力は、 たとえば以下のようになります。

Imagick::floodfillPaintImage() の出力例
Imagick::floodfillPaintImage() の出力例