📜  PHP | ImagickKernel fromBuiltIn()函数(1)

📅  最后修改于: 2023-12-03 15:03:38.609000             🧑  作者: Mango

PHP | ImagickKernel fromBuiltIn()函数介绍

在使用 PHP Imagick 扩展时,ImagickKernel 是一个非常有用的类,可以通过它来创建、修改和应用各种卷积核操作。

其中 fromBuiltIn() 函数是 ImagickKernel 类中的一个静态函数,用于返回预定义好的一些卷积核,可以直接在代码中使用,无需再手动定义。

语法

以下是 fromBuiltIn() 函数的语法:

public static ImagickKernel ImagickKernel::fromBuiltIn(string $kernelType [, string $kernelString ] )
参数

fromBuiltIn() 函数接收两个可选参数:

  • $kernelType: 必需,字符串,表示要使用预定义好卷积核的类型,包括以下几种:
    • blur: 高斯模糊滤波器,区别于 box 模糊滤波器,它将像素值与邻域内的像素值按照高斯函数加权平均
    • sharpen: 锐化滤波器,可以尝试增强图像的清晰度
    • edge: 边缘检测滤波器,可以使图像中的边缘更加明显
    • emboss: 浮雕滤波器,可以使图像呈现出浮雕效果
    • topLeft: 四联通局部运算,对目标像素左、上、左上、当前像素四个像素值求和
    • top: 横向三联通局部运算,对目标像素左、当前、右三个像素值求和
    • topRight: 对角线四联通局部运算,对目标像素左上、上、右上、当前四个像素值求和
    • left: 纵向三联通局部运算,对目标像素上、当前、下三个像素值求和
    • center: 八联通局部运算,对目标像素上、左上、左、左下、下、右下、右、右上、当前八个像素值求和
    • right: 纵向三联通局部运算,对目标像素上、当前、下三个像素值求和
    • bottomLeft: 对角线四联通局部运算,对目标像素当前、左下、下、右下四个像素值求和
    • bottom: 横向三联通局部运算,对目标像素左、当前、右三个像素值求和
    • bottomRight: 四联通局部运算,对目标像素左下、下、右下、当前四个像素值求和
  • $kernelString:可选,字符串,表示要自定义的卷积核,当 $kernelType 参数值为 custom 时才需要传入该参数。

除了 custom 类型外,其他类型都有预定义好的卷积核,如果你想查看预定义好卷积核的实现,可以查看 ImagickKernel 类的源代码。

示例

以下示例演示了如何使用 fromBuiltIn() 函数来创建一个高斯模糊滤波器卷积核:

<?php
// 创建 Imagick 实例
$image = new \Imagick('/path/to/image.jpg');

// 获取高斯模糊滤波器卷积核
$kernel = \ImagickKernel::fromBuiltIn('blur');

// 应用卷积核操作
$image->convolveImage($kernel);

// 显示处理后的图片
header('Content-Type: image/jpg');
echo $image;
?>

以上代码中,我们首先创建了一个 Imagick 实例,然后使用 fromBuiltIn() 函数获取了一个 blur 类型的卷积核,接着使用 convolveImage() 函数将卷积核应用到图片中,最后将处理后的图片输出到浏览器显示。

通过改变 $kernelType 参数值,我们可以使用其他预定义好的卷积核操作来处理图片。

总结

fromBuiltIn() 函数是 ImagickKernel 类中的一个静态函数,用于返回预定义好的一些卷积核,可以直接在代码中使用,无需再手动定义。但是需要注意的是,不同的卷积核操作会对图片产生不同的影响,需要根据具体需求选择合适的卷积核操作。