PHP ImageMagick - 锐化和模糊



图像锐化

为了使图像看起来更锐利,ImageMagick 提供了一个内置函数 ‘adaptiveSharpenImage()’,它可以自适应地锐化图像。它以图像作为输入,并输出锐化的图像。

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

语法

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

此函数包含三个参数:半径、sigma 和通道。

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

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

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

示例

为了清楚地了解如何实现此函数,请查看下面的示例。此代码创建一个 Imagick 对象并输入图像。然后,应用 ‘adaptiveSharpenImage()’ 函数以及所需参数 (radius=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) −

Sharpening Imaging

输出

Sharpening Imaging

图像模糊

模糊图像使颜色过渡平滑。通过模糊,像素强度的快速变化会被平均化。在本章中,你将学习使用 ImageMagick 提供的内置函数以不同的方式模糊图像。

PHP ImageMagick 库提供了一系列强大的函数,我们可以使用这些函数执行各种操作,包括模糊、缩放、裁剪等等。使用 PHP ImageMagick,你可以仅用几行代码轻松模糊图像。

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

添加模糊滤镜

要向图像添加模糊滤镜,ImageMagick 提供了一个名为 ‘blurImage()’ 的方法。它以图像作为输入并生成/返回模糊图像。

语法

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

此函数有 3 个参数:半径、sigma 和通道。

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

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

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

示例

在下面的示例中,创建了一个新的 Imagick 对象并以图像作为输入。然后,应用 ‘blurImage()’ 函数来模糊图像。半径和 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) −

Adding Blur Filter

输出

Adding Blur Filter

按特定角度应用模糊

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

语法

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

此函数包含两个参数:角度和通道。

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

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

示例

在下面的 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) −

Applying Blur Certain Angle

输出

Applying Blur Certain Angle

模拟运动模糊

在图像中移动物体中看到的模糊称为“运动模糊”。为了模拟运动模糊,ImageMagick 提供了一个内置函数 ‘motionBlurImage()’。它以图像作为输入,并输出运动模糊的图像。

语法

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

此函数包含 4 个参数:半径、sigma、角度和通道。

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

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

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

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

示例

在下面的示例中,创建了一个新的 Imagick 对象并以图像作为输入。然后应用 'motionBlurImage()' 函数以半径 (20)、sigma (20) 和角度 (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) −

Simulating Motion Blur

输出

Simulating Motion Blur
广告