PHP | Imagick floodFillPaintImage()函数
Imagick floodFillPaintImage()函数是PHP的一个内置函数,用于更改与目标匹配的任何像素的颜色值,以及与其直接相邻的相同颜色的像素。
注意:此方法替代了已弃用的 Imagick::paintFloodFillImage()函数,如果 Imagick 已针对 ImageMagick 6.3.8 或更高版本编译,则该方法可用。
句法:
bool Imagick::floodFillPaintImage
( mixed $fill, float $fuzz, mixed $target, int $x, int $y, bool $invert
[, int $channel = Imagick::CHANNEL_DEFAULT ] )
参数:从上面的语法可以看出,该函数有七个参数。他们是:
- 填充(混合类型) :这个参数是一个 ImagickPixel 对象或一个包含填充颜色的字符串,我们需要使用这个函数在像素上填充的颜色。
- fuzz (Float type) :这个参数定义了模糊量。模糊值基于图像颜色的强度。
- target (Mixed type) :这个参数是一个 ImagickPixel 对象或一个包含要绘制的目标颜色的字符串。
- x (Int type) : 这个参数给出了洪水填充的 X 坐标起始位置。
- y(Int type) :该参数给出了洪水填充的 Y 坐标起始位置。
- 反转(混合类型) :如果设置为 TRUE,则绘制与目标颜色不匹配的任何像素。简而言之,这以相反的方式工作(因此反转),以填充除目标颜色之外的剩余像素。如果我们只想填充目标颜色,那么默认情况下我们会将其设置为 FALSE。
- channel (Int type) :此参数用于提供根据我们的要求有效的任何通道常量。如果不需要通道,我们不需要定义它(只能使用带有上述六个参数的函数)。
注意:在此处的“混合类型”上下文中,请注意PHP中的“混合”关键字不是原始类型,不能用于编程。这里使用混合类型来表示类型可以是任何类型。
返回值:该函数在成功时返回 True。
下面的例子说明了PHP的 Imagick::floodFillPaintImage()函数:示例:让我们考虑两个块,一个黑色和一个绿色(190×90 尺寸):
现在,我们将编写一个PHP程序来说明 Imagick::floodFillPaintImage()函数。
resetIterator();
$combined = $imagick->appendImages(true);
// Save the image for comparison:
$combined->writeImage("blackgreenobjects.png");
// Set (x, y) values for the target pixel to paint:
$x = 1;
$y = 1;
// Get the color we are painting:
$target = $combined->getImagePixelColor($x, $y);
// Paints pixel in position (1, 1) and all neighboring pixels
//that match the target color (black) to green color:
$combined->floodfillPaintImage("green", 1, $target, $x, $y, false);
// Save the resulting image:
$combined->writeImage("greengreenfill.png");
// Display resulting image:
echo $combined;
?>
输出:此代码将首先在一个名称下创建两个 Imagick 对象,一个黑色块和一个绿色块,然后将它们附加到一个中(连续的对象附加在第一个对象下方)。
- 保存的图像如下所示:
- 然后使用 floodfillPaintImage()函数,我们将 (x=1, y=1) 位置的像素及其相邻像素着色/填充为绿色。 (1, 1) 位置的像素被着色为黑色(作为它的第一个块),因此该像素及其相邻的黑色像素(在一个链中,直到颜色改变,填充像“洪水”蔓延)得到充满了我们给定的绿色。
保存的图像如下所示:
注意:如果在目标颜色为绿色的情况下再次使用该函数,我们最初定义的两个块都会更改为填充颜色,因为它们现在具有相同的颜色。