Imagick::charcoalImage() PHP

2025年3月17日 | 阅读 3 分钟

Imagick::charcoalImage() 方法是一个 PHP 内置函数,用于模拟图片的炭笔画效果。此函数将为输入的参数图像创建一个炭笔画效果的副本。我们输入给该函数的图像,经过该函数处理后,输出的就是该图像的炭笔画副本。

该函数接受以下参数,如上所述并描述如下

  • $radius:此参数存储高斯半径的值(以像素为单位)。
  • $sigma:此参数存储高斯标准差的值(以像素为单位)。

返回值

返回值是一个布尔值,取决于函数的成功与否。如果将输入图像成功转换为炭笔画图像,则此函数的返回类型为 true。另一方面,如果将输入图像转换为炭笔画图像不成功,则此函数的返回类型将变为 false。

现在让我们看一个如何使用此函数将图像转换为其炭笔画替代品的示例代码。

示例代码

输出

Imagick::charcoalImage() PHP

上面编写的代码将成功地将图像转换为其炭笔画替代品。要指定我们要转换为炭笔画图像的图像,我们需要提供文件路径,该文件路径将是我们希望应用此操作的文件的实际位置。

附加说明

此函数参数的用法有些令人费解。我认为我是在对其进行一番尝试后才弄清楚的。高斯模糊可以看作是“画笔”,半径是画笔的半径,标准差是画笔印记大小的差异程度(用 Gimp/Photoshop 的术语来说)。$radius 参数可以设置为 0 到任意大的值,但一旦超过 10、20 或 30 像素,根据图像大小的不同,图像就会变得过于模糊而无法识别。为了达到预期的效果,$sigma,即标准差,应小于半径。可以这样理解:“$radius 像素大小的炭笔刷,每个画笔比那个大或小 $sigma 像素。”

对于一张普通的 500 x 500 像素的图像,您可能需要 $radius 为 3 到 5,$sigma 为 1 到 3,但通常您可以一直用到 10 像素,直到图像模糊到无法识别为止。(目前,对于这张 400x400 的图像,最佳组合是 $radius: 5 / $sigma: 2)。此代码打开提供的文件,对其应用炭笔画图像效果,然后将其保存到另一个指定的文件。参数通过 POST 数据传递,并且仅使用 ImageMagick 函数来读取图像文件、炭笔画图像和写入图像文件,如下所示:

代码

输出

Imagick::charcoalImage() PHP

因此,本文简要介绍了如何使用此 PHP 内置函数将简单图像转换为其炭笔画对应物。除了 Imagick::charcoalImage() 函数,我们还使用了一些其他函数,我们将在其他文章中介绍这些函数。