PHP ImageMagick - 锐化和模糊

锐化成像

为了使图像看起来更清晰,Imagemagick 提供了一个内置函数'adaptiveSharpenImage()',它可以自适应地锐化图像。 它将图像作为输入并生成锐化图像作为输出。

此方法使用算法来检测图像中应应用锐化的区域,并相应地调整锐化量。 与均匀锐化技术相比,这可以获得更自然的结果,而不会牺牲质量或在图像中引入伪影。

语法

public Imagick::adaptiveSharpenImage(float $radius, float $sigma, int $channel = Imagick::CHANNEL_DEFAULT): bool

该函数由三个参数组成,分别是radius、sigma和channel。

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

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

  • Channel 提供对您的通道模式有效的任何通道常量。

示例

为了清楚地了解如何实现此功能,请看下面的示例。 此代码创建一个 imagick 对象并输入图像。 然后,应用"adaptiveSharpenImage()"函数和所需的参数(半径=19,sigma=15)。 输出图像以"adaptiveSharpenImage.png"的形式获得。

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

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

锐化成像

输出

锐化成像

模糊图像

模糊图像可以使颜色过渡平滑。 通过模糊,像素强度的快速变化被平均。 在本章中,您将学习借助 Imagemagick 提供的内置函数来模糊图像的不同方法。

PHP Image magick 库提供了一系列强大的函数,使用它们我们可以执行各种操作,包括模糊、调整大小、裁剪等。 使用 PHP Imagemagick,您只需几行代码即可轻松模糊图像。

您还可以调整模糊的强度以及其他几个设置以达到所需的效果。 无论您是在照片中寻找微妙还是戏剧性的变化,PHP Imagemagick 都能满足您创建令人惊叹的结果所需的一切!

添加模糊滤镜

为了在图像上添加模糊滤镜,Imagemagick 提供了一个名为'blurImage()'的方法。 它将图像作为输入并生成/返回模糊图像。

语法

public Imagick::blurImage(float $radius, float $sigma, int $channel = ?): bool

该函数有 3 个参数: radius, sigma, 和 channel。

  • Radius是一个浮点值,指定需要模糊的半径。

  • Sigma 是一个浮点值,指定标准差。

  • channel 指定通道类型常量。 当未指定通道时,所有通道都将被模糊。

示例

在下面的示例中,创建了一个新的 imagick 对象,并将图像作为输入。 然后,应用'blurImage()'函数来模糊图像。 radius和sigma是函数内部指定的参数(radius=25, sigma=5)。 模糊图像以 'blurImage.png' 形式输出。

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

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

添加模糊滤镜

输出

添加模糊滤镜

以特定角度应用模糊

Imagemagick的'rotationalImageBlur()'函数可用于图像处理,允许用户以任何角度对图像应用模糊效果。 它接受输入图像并生成具有所需模糊程度的模糊版本。

语法

public Imagick::rotationalBlurImage(float $angle, int $channel =Imagick::CHANNEL_DEFAULT):bool

该函数包含两个参数:angle 和 channel。

  • Angle是一个浮点值,用于存储角度。

  • channel 是一个对您的通道模式有效的常量。

示例

在下面的 PHP 代码示例中,创建了一个新的 imagick 对象,并将图像作为输入。 然后,应用'rotationalBlurImage()'函数在特定角度(15)上模糊图像。 模糊图像以"rotationalBlurImage.png"形式作为输出获得。

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

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

应用模糊特定角度

输出

应用模糊特定角度

模拟运动模糊

图像中移动物体出现的模糊称为"运动模糊"。 为了模拟运动模糊,Imagemagick 提供了一个内置函数'motionBlurImage()'。它将图像作为输入并生成运动模糊图像作为输出。

语法

public Imagick::motionBlurImage(float $radius, float $sigma, float $angle, int $channel =Imagick::CHANNEL_DEFAULT): bool

该函数包含4个参数,分别是radius, sigma, anglet 和 channel。

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

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

  • angle 也是一个浮点值,用于指定模糊运动的角度。

  • Channel 是一个对您的通道模式有效的常量。

示例

在下面的示例中,创建了一个新的 Imagick 对象,并将图像作为输入。 然后应用"motionBlurImage()"函数以radius (20), sigma (20) 和 angle (45)作为参数来模糊图像。 结果,可以获得原始图像的模糊版本,格式为'motionBlurImage.png'。

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

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

模拟运动模糊

输出

模拟运动模糊