Imagick floodFillPaintImage() 函数

17 Mar 2025 | 4 分钟阅读

任何与目标颜色匹配的像素,并且是紧邻的邻居,其颜色值都会被改变。此函数是 Imagick::paintFloodFillImage 的替代品,后者已被弃用()。如果 Imagick 已编译为 ImageMagick 版本 6.3.8 或更高版本,则可以使用此方法。

参数

填充

包含填充颜色或 ImagickPixel 对象的字符串

fuzz

模糊的程度。将 fuzz 设置为十,则亮度分别为 100 和 102 的红色和绿色现在被视为相同的颜色。

target (目标)

ImagickPixel 对象或指定要绘制的颜色的字符串

x

X 渐变填充的起始点

y

渐变填充的 Y 坐标起始位置。

invert

如果为 true,则每个不匹配所需颜色的像素都将被绘制。

channel

为您的通道模式提供任何有效的通道常量。使用按位运算符组合通道常量以应用于多个通道。Imagick::CHANNEL DEFAULT 是默认值。通道常量列表可在此处找到。

返回值

渐变填充绘制图像的返回类型为布尔类型,这意味着此函数的返回值将是 true 或 false,具体取决于操作的成功与否。当渐变填充操作成功应用于传递给此函数的参数所指定的的目标像素或像素集时,此函数的返回类型为 true;另一方面,当对指定的目标像素的渐变填充操作不成功时,此函数的返回类型将变为 false。

代码

输出

Imagick floodFillPaintImage() Function

在上面编写的代码中,首先我们创建了一个 Imagick 对象,然后使用该 Imagick 对象创建了三个分别代表红色、绿色和蓝色的图像。在创建完这三个图像后,我们将所有三个图像追加到一个单一图像中并存储起来。一旦我们的初始图像准备好,下一步就是更改特定目标像素集的颜色。为了改变特定目标像素集的颜色,我们在 PHP 中使用了 flood fill paint image 函数,并将目标颜色更改为黑色。在指定像素集的颜色成功转换后,结果图像以 PNG 格式存储在另一个图像中。

另一个例子

在此示例中,我们讨论了一个可以减少此函数产生的噪声的具体案例。首先,在此示例中,我们创建了一个 Imagick 对象,并打开了我们要对其执行操作的图像。第一个操作是用透明颜色移除背景。所以当我们第一次使用 flood fill paint image 函数时,大部分区域都被移除了,但图像中仍然存在一些背景颜色。为了减少这个错误率,我们再次调用 flood fill paint image,只是使用了不同的参数值,通过这些不同的参数值,我们能够完全移除指定图像的背景颜色。

因此,在本文中,我们已经了解了如何在 PHP 中使用 Imagick flood fill paint image 函数为我们指定的任何目标像素集填充所需的颜色。