PHP ImageMagick - 不同的效果


创建 3D 效果

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

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

句法

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

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

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

  • “方位角”“仰角”是浮点值,分别定义偏离 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

该函数将“阈值”作为参数。它是一个整数值,用于衡量日晒效应的程度。

例子

此示例显示“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

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

  • 振幅指定波的振幅。

  • 长度指定波的长度。

例子

这是一个显示“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

该函数接受一个参数:度数。“度数”是一个浮点值,表示每个像素移动的弧度。通过这种方式,当度数从 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) -

创建漩涡效果

输出

创建漩涡效果