(PECL imagick 2 >= 2.3.0, PECL imagick 3)
Imagick::floodFillPaintImage — 対象にマッチする任意のピクセルの値を変更する
$fill
,$fuzz
,$target
,$x
,$y
,$invert
,$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");
?>
上の例の出力は、 たとえば以下のようになります。