函数名: Imagick::morphology()
适用版本: 所有版本的 Imagick 扩展中可用
用法: Imagick::morphology() 方法用于应用形态学操作(如腐蚀、膨胀、开运算、闭运算等)到图像上。它可以改变图像的形状、大小和结构。该方法接受一个数组参数,数组中包含了形态学操作的参数和参数值。
语法: bool Imagick::morphology ( int $morphologyMethod , int $iterations , ImagickKernel $ImagickKernel [, int $channel = Imagick::CHANNEL_DEFAULT ] )
参数:
- $morphologyMethod:指定要应用的形态学操作的类型。可选的值有 Imagick::MORPHOLOGY_ERODE、Imagick::MORPHOLOGY_DILATE、Imagick::MORPHOLOGY_OPEN、Imagick::MORPHOLOGY_CLOSE、Imagick::MORPHOLOGY_GRADIENT、Imagick::MORPHOLOGY_TOPHAT、Imagick::MORPHOLOGY_BLACKHAT。
- $iterations:指定形态学操作的迭代次数。
- $ImagickKernel:一个 ImagickKernel 对象,用于指定形态学操作的内核。
- $channel(可选):指定要应用形态学操作的图像通道。默认为 Imagick::CHANNEL_DEFAULT。
返回值:成功时返回 true,失败时返回 false。
示例:
// 创建一个 Imagick 对象
$image = new Imagick('input.jpg');
// 创建一个 3x3 的腐蚀内核
$kernel = ImagickKernel::fromMatrix([
[-1, -1, -1],
[-1, 1, -1],
[-1, -1, -1]
]);
// 应用腐蚀操作
$image->morphology(Imagick::MORPHOLOGY_ERODE, 1, $kernel);
// 保存结果图像
$image->writeImage('output.jpg');
以上示例中,我们首先创建了一个 Imagick 对象来加载输入图像。然后,我们创建了一个 3x3 的腐蚀内核,通过 ImagickKernel::fromMatrix() 方法来定义内核的值。最后,我们使用 Imagick::morphology() 方法将腐蚀操作应用到图像上,并将结果保存为 output.jpg。
注意:示例中的腐蚀操作只是一个示例,您可以根据需要选择不同的形态学操作和内核。