PHP ImageMagick - 素描模拟



本章节,你将学习如何使用 ImageMagick 提供的一些内置函数来模拟不同类型的素描。

模拟炭笔画

ImageMagick 提供了一个名为 `charcoalImage()` 的方法,它可以生成输入图像的炭笔画效果。

语法

public Imagick::charcoalImage(float $radius, float $sigma): bool

此函数接受两个参数:半径和 sigma。

  • 半径是一个浮点值,指定高斯函数的半径(以像素为单位),不包括中心像素。

  • Sigma 也是一个浮点值,指定高斯函数的标准差(以像素为单位)。

示例

这是一个示例,展示了 `charcoalImage()` 函数的实现。首先,创建一个新的 Imagick 对象并输入图像。然后,将 `charcoalImage()` 函数应用于该图像。所需的输出将以 `charcoalImage.png` 的形式获得。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.png");
   $image->charcoalImage(2, 2);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/charcoalImage.png");
?>

假设程序中的输入图像是 (image.png) −

Simulating Charcoal Drawing

输出

Simulating Charcoal Drawing

模拟铅笔素描

ImageMagick 提供了一个名为 `sketchImage()` 的内置函数,它可以生成输入图像的铅笔素描效果。

语法

public Imagick::sketchImage(float $radius, float $sigma, float $angle): bool

此函数包含 3 个参数:半径、sigma 和角度。这些都是浮点值。“半径”指定高斯函数的半径(以像素为单位),“sigma”指定高斯函数的标准差(以像素为单位),“角度”指定应用效果的角度,并指定模糊运动的角度。

示例

这是一个示例,展示了 `sketchImage()` 函数的实现。首先,创建一个新的 Imagick 对象并输入图像。然后,将 `sketchImage()` 函数应用于该图像。所需的输出将以 `sketchImage.png` 的形式获得。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.png");
   $image->sketchImage(11, 11, 30);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/sketchImage.png");
?>

假设程序中的输入图像是 (image.png) −

Simulating
Pencil Sketch

输出

Simulating
Pencil Sketch

模拟油画

油画是用油性颜料制作的一种绘画类型。无需使用真实的油画颜料,可以使用 ImageMagick 在 PHP 中的内置函数 `oilPaintImage()` 来模拟这种油画效果。

语法

public Imagick::oilPaintImage(float $radius): bool

此函数只有一个参数,即“半径”,它是一个浮点值。它指定圆形邻域的半径。此函数接收图像作为输入,并应用特殊的特效滤镜来模拟油画效果,并将其作为输出。

示例

这是一个示例,展示了 `oilPaintImage()` 函数的实现。首先,创建一个新的 Imagick 对象并输入图像。然后,将 `oilPaintImage()` 函数应用于该图像。所需的输出将以 `oilPaintImage.png` 的形式获得。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.png");
   $image->oilPaintImage(2);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/oilPaintImage.png");
   ?>

假设程序中的输入图像是 (image.png) −

Simulating Oil Painting

输出

Simulating Oil Painting
广告