PHP ImageMagick - 不同的效果

创建 3D 效果

看起来具有高度、宽度和深度的图片称为 3 维 (3D) 图片。 3D 图像为用户提供了对象的真实复制品。

为了直接在服务器上创建此效果,Imagemagick 提供了一个名为"shadeImage()"的内置函数。 这很方便,能够轻松地将标准 2D 图像转换为高质量的 3D 渲染。

语法

public Imagick::shadeImage(bool $gray, float $azimuth, float $elevation): bool

该函数需要 3 个参数:灰度、方位角和仰角。

  • gray灰度是一个布尔值,用于对每个像素的强度进行着色。

  • azimuth方位角和elevation仰角是浮点值,分别定义远离x轴和z轴上方的光源方向。

为了创造3D效果,主要考虑光量和光的方向。 该函数将图像作为输入,并生成具有 3D 效果的图像作为输出。

示例

此示例显示了 'shadeImage()' 函数的使用。在此,创建了一个 Imagick 对象并传递了一个图像作为输入。 然后调用 'shadeImage()' 函数,并提供灰度值、方位角值和高程作为参数。

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

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

创建 3D 效果

输出

创建 3D 效果

创建日晒效果

当摄影胶片过度曝光时看到的效果称为过曝效果。 为了在 PHP 中创建这种效果,Imagemagick 提供了一个内置函数 'solarizeImage()'

此效果会产生色调反转的图像,其中高光变暗,反之亦然。

语法

public Imagick::solarizeImage(int $threshold): bool

该函数采用"threshold"作为参数。 它是一个整数值,用于衡量日晒效应的程度。

示例

此示例显示'solarizeImage()'函数的实现。 创建一个新的 imagick 对象并将图像作为输入。 现在,应用

'solarizeImage()'

函数并以阈值作为参数,获得的输出图像的形式为'solarizeImage.png'。

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

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

创建日晒效果

输出

创建日晒效果

创建波形滤镜效果

Imagemagick 提供了一个名为'waveImage()' 的内置函数,它有助于在图像上模拟滤波器。 它以图像作为输入,获得的输出是带有滤波器的图像。

语法

public Imagick::waveImage(float $amplitude, float $length): bool

该函数有两个参数:幅度和长度。

  • amplitude 指定波的振幅。

  • length 指定波的长度。

示例

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

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

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

创建波浪滤镜效果

输出

创建波浪滤镜效果

创建漩涡效果

在本章中,您将学习旋转图像。 一般来说,旋转是指以扭转或圆周运动快速移动。 包含这种类型效果的图像称为漩涡图像。 手动创建漩涡图像很困难。 但是,为了使这更容易,Imagemagick 提供了一个内置函数'swirlImage()',它使像素绕图像中心旋转。

语法

Imagick::swirlImage(float $degrees): bool

该函数接受一个参数:degrees。 "degrees"是一个浮点值,表示每个像素移动的弧度。 这样,当度数从 1 移动到 360 时,您会获得更引人注目的效果。

示例

在下面的示例中,您首先创建一个新的 imagick 对象并输入图像。 然后,通过指定度数(度数=200)来应用'swirlImage()'函数。 最后,获得该旋转图像作为输出。

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

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

创建漩涡效果

输出

创建漩涡效果