PHP ImageMagick 快速指南



PHP ImageMagick - 简介

我们知道,图像是一种改善任何网站用户体验的简单方法。许多实验都证明,我们的大脑可以比文本更快地理解图像。它们还有助于吸引注意力和引发情感。在呈现重要信息时,图像可以发挥巨大的价值。

我们如何动态创建或编辑图像,使其适合 Web 应用程序?'ImageMagick' 可以做到!

什么是 ImageMagick?

ImageMagick 是一款免费提供的强大工具和库集合,用于对数字图像执行多种操作。

  • 它是一个软件套件,用于读取、创建、编辑、合成、转换和写入各种格式的图像。

  • 这些格式包括 DPX、EXR、GIF、JPG、JPEG、PNG、TIFF 等(超过 200 种格式)。

  • 这些操作可通过命令行或 C、C++、Perl、Java、PHP 或 Python 编程语言获得。在本教程中,我们将学习 PHP 中的 ImageMagick。

什么是 PHP?

PHP 代表超文本预处理器。它是一种服务器端脚本语言,嵌入在 HTML 中。它包含各种内置函数,可以加快开发速度。这些脚本在服务器上执行,软件可以免费下载和使用。

什么是 PHP 中的 ImageMagick?

PHP 中的 ImageMagick 是一个原生扩展,可以对图像执行所有操作。操作还包括调整大小、翻转、镜像、旋转、扭曲、转换图像、调整图像颜色,甚至绘制文本、线条、多边形、椭圆和曲线。

  • 它是免费软件,以即用型二进制分发版或源代码的形式提供,您可以在开源和专有应用程序中使用、复制、修改和分发它。

  • 它利用多个计算线程来提高性能,并且可以读取、处理或写入兆像素、千兆像素或太像素的图像大小。

  • 它运行在 Linux、Windows、Mac OS X、iOS、Android OS 等操作系统上。

安装和配置

众所周知,PHP 是一种服务器端脚本语言,使用任何 Web 服务器(如 Apache、Nginx 等)来运行 PHP 脚本将是可取的。这允许您从浏览器运行 PHP 脚本。

还有一种执行 PHP 脚本的方法,即使用命令行。这不需要安装任何 Web 服务器。在本教程中,您将学习如何使用 Apache 服务器实现 ImageMagick 功能。为此,我们安装 XAMPP。

XAMPP 代表平台、Apache、Maria DB、PHP、Perl。它是 Apache Friends 开发的免费且开源的跨平台 Web 服务器解决方案堆栈软件包,主要由 Apache HTTP 服务器、Maria DB 以及用于 PHP 和 Perl 编程语言编写的脚本的解释器组成。

安装 XAMPP

在本节中,您将能够学习 XAMPP 安装的分步过程。

步骤 1 - 打开此网站 - https://www.apachefriends.org

步骤 2 - 安装在那里提供的最新版本的 XAMPP,该版本适合您的操作系统(Windows/Linux/IOS)。

步骤 3 - 下载的文件将类似于'xampp-windows-x64-7.4.27-2-VC15-installer’。

步骤 4 - 运行下载的文件。您会收到一些警告,单击“确定”。

步骤 5 - 出现以下屏幕,单击“下一步”。

Installing XAMPP

步骤 6 - 选择 Apache、MySQL、PHP 和 phpMyAdmin,然后单击“下一步”。

Installing XAMPP

步骤 7 - 在此步骤中,选择任何特定文件夹,或者您可以保留原样(默认)。单击“下一步”。

Installing XAMPP

步骤 8 - 在下一步中,文件将自动解压缩。过程完成后,单击“下一步”。

步骤 9 - 完成 100% 后,单击“下一步”。

步骤 10 - 现在,会出现一个包含“完成 XAMPP 设置向导”的对话框,然后单击“完成”。

安装 ImageMagick

在本节中,您将学习如何在 PHP 中安装 ImageMagick 扩展和安装程序。

步骤 1 - 打开网站 https://mlocati.github.io

步骤 2 - 根据您的 PHP 配置、架构和 XAMPP 版本的线程安全下载 ImageMagick 扩展和安装程序。

  • 下载的安装程序文件将采用“ImageMagick-7.1.0-18-vc15-x64.zip”的形式。

  • 下载的 ImageMagick 扩展采用“php-imagick-3.7.0-7.4-ts-vc15-x64.zip”的形式。

Installing XAMPP

Installing XAMPP

步骤 3 - 解压缩从(b)下载的扩展文件中的所有文件。从这些文件中,复制‘php_imagemagick.dll’文件。

步骤 4 - 将文件粘贴到 PHP 安装的“ext”目录中。

Installing XAMPP

步骤 5 - 解压缩从(a)下载的安装程序文件中的所有文件。从中,复制以 CORE_DL / IM_MOP_RL/FILTER 开头的所有文件,这些文件都是 DLL 文件。这些文件从“CORE_RL_bzlib_.dll”开始,如下面的图像所示。选择文件,直到它们以‘IM_MOD_RL_yuv_.dll’结尾。

Installing XAMPP

步骤 6 - 将这些文件粘贴到 PHP 根目录,其中包含“php.exe”。

Installing XAMPP

步骤 7 - 现在,转到 XAMPP 控制面板。停止 Apache。

步骤 8 - 单击“配置”并选择 PHP(php.ini)文件。

Installing XAMPP

步骤 9 - 在该文件中,找到代码中的“extensions”。在'extension=php_ftp.dll'行之后,键入'extension=php_imagick.dll'。保存文件。

Installing XAMPP

步骤 10 - 重新启动 Apache。

步骤 11 - 安装完成。

验证

在直接跳到执行部分之前,让我们首先检查 Imagemagick 是否已正确安装在您系统的 PHP 中。为此,请按照以下步骤操作。

步骤 1 - 转到浏览器并单击“localhost”。

步骤 2 - 转到右上角的'phpinfo'

步骤 3 - 搜索 Imagick。屏幕必须显示如下。

Verification

步骤 4 - 如果出现,则表示 Imagick 设置已成功完成。此软件包包含 Imagick 模块版本、Imagick 类、发布日期以及所有受支持的格式。

PHP ImageMagick - 背景颜色

图像文本的背景颜色是指其背景的颜色。使用适合图像或文本上下文的颜色有助于提高可读性,甚至更容易扫描。

例如,在下面的图像中,我们可以看到“TUTORIALS POINT”写在普通背景上,不太容易阅读。为该元素选择合适的背景颜色可以提高其可见性。

PHP Imagemagick Background Color

如果我们查看下面的图像,我们可以观察到这比上一张图像更易读,其主要原因是其背景颜色。

PHP Imagemagick Background Color

在以下部分中,我们将学习如何识别图像的背景颜色,以及如何为图像设置背景颜色。

识别背景颜色

要使用 ImageMagick 识别图像的背景颜色,我们有一个名为‘getImageBackgroundColor()’的方法。如果图像中未指定或找到任何内容,则默认背景颜色为“白色”。

语法

public Imagick :: getImageBackgroundColor() :  ImagickPixel

此方法不接受任何参数。返回值采用 RGB 三元组的形式,它是一个三元素行向量。每个元素指定所选颜色的红色、绿色和蓝色分量。因此,根据该三元组,用户将能够识别背景中存在的颜色。

示例

以下示例演示了如何在 PHP 中使用`getImageBackgroundColor()`方法获取图像的背景颜色。要执行代码,您需要一个本地服务器环境,例如 XAMPP。

代码首先创建一个 Imagick 对象,然后使用此函数检索背景颜色。最后,它在您的服务器上打印出该颜色的 RGB 三元组表示形式。

<?php
   //creating a new imagick object //
   $img=new Imagick($_SERVER['DOCUMENT_ROOT'].'/test/image.jpg');
   $color=new ImagickPixel($img->getImageBackgroundColor) ;//Get the Background Color
   $colorInfo = $color->getColorAsString (); //Get the Color from ImagickPixel
   echo $colorInfo; //display colorinfo as output
?>

假设以下是在程序中的输入图像(image.jpg) -

Identifying the Background-Color

输出

srgb(0, 0, 0)

获得的输出为 srgb(0,0,0),即“黑色”。

设置背景颜色

在某些情况下,我们需要为图像设置背景颜色,尤其是包含文本的图像,以提高其可读性。要在 PHP 中设置图像的背景颜色,我们使用‘setImageBackgroundColor()’方法。

语法

此方法的语法如下所示 -

public Imagick::setImageBackgroundColor(mixed $background): bool

此方法接受'background'作为参数,其中包含所需的背景颜色。执行成功后,它将返回 true 并生成具有指定背景颜色的图像。

示例

此 PHP 代码片段显示了如何使用`setImageBackgroundColor()`函数设置图像的背景颜色。

  • 首先,创建一个新的 Imagick 对象并将图像作为输入读取。然后,使用内置函数 setImageBackgroundColor() 设置背景颜色。

  • 输出可以通过使用`echo`在服务器上显示,也可以使用`writeImage()`保存在本地。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.png");
   $image->setImageBackgroundColor('black');
   $image->setImageAlphaChannel(100);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/newimage.png");
?>

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

Setting a Background Color

输出

Setting a Background Color

PHP ImageMagick - 图像反射

图像反射是一种图像处理技术,用于创建镜像图像或对称图案。此效果是通过水平或垂直复制和翻转图像来实现的,从而创建原始图像的镜像版本。

在本章中,我们将探讨如何使用 PHP Imagemagick 库轻松创建图像反射。我们将涵盖反射类型、尺寸调整和颜色操作等基本概念,让您全面了解该过程,并帮助您快速轻松地创建美丽的反射效果。

图像翻转

翻转图像是指垂直创建该图像的反射复制的过程。因此,为了翻转图像,我们在 Imagemagick 中有一个‘flipImage()’方法。此函数有助于显示输入的垂直镜像图像。

语法

bool Imagick::flipImage(void)

此函数不接受任何参数。

示例

在此示例中,您将学习如何在 PHP 中使用'flipImage()'函数。首先,创建一个新的 Imagick 对象并读取输入图像。然后,使用 flipImage() 方法将其垂直翻转。您可以直接在服务器上显示翻转后的图像,也可以使用writeImage()将其保存到您的系统中。

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

假设以下是在程序中的输入图像(image.jpg) -

Image Flipping

输出

Image Flipping

图像翻转

图像翻转是指水平方向上对图像进行镜像复制的过程。因此,为了翻转图像,我们在 Imagemagick 中有一个方法‘flopImage()’。此函数有助于显示输入图像的水平镜像。

语法

bool Imagick::flopImage(void)

此函数不接受任何参数。

示例

在本例中,您将学习如何在 PHP 中使用'flopImage()'函数翻转图像。首先,创建一个新的 Imagick 对象并读取输入图像。接下来,使用'flopImage()'函数将其水平翻转。翻转后的图像将作为输出返回。

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

假设以下是在程序中的输入图像(image.jpg) -

Image Flopping

输出

Image Flopping

PHP ImageMagick - 图像裁剪

图像裁剪涉及裁剪图像的一部分或通过修剪不必要的部件来减小图像尺寸。这使您能够专注于图像中的重要元素,同时丢弃任何不必要的元素。

使用 ImageMagick 进行图像裁剪是一种快速编辑图像的好方法,无需任何特殊软件或复杂的图形设计技术知识。

在本节中,您将学习如何使用 ImageMagick 库提供的内置函数来裁剪图像。

图像裁剪

从图像中提取区域称为“裁剪”。它只不过是去除图像不需要的边缘或获取图像的特定部分。这可以通过 PHP 中 Imagemagick 中名为‘cropImage()’的方法来完成。

语法

public Imagick::cropImage(int $width, int $height, int $x, int $y) : bool

参数

此方法接受 4 个参数,分别是宽度、高度、x 和 y。

  • 宽度 - 裁剪的宽度,

  • 高度 - 裁剪的高度,

  • x - 裁剪区域左上角的 X 坐标。

  • y - 裁剪区域左上角的 Y 坐标。

获得的输出将是根据作为该方法参数给出的测量值裁剪的图像。

示例

在以下示例中,创建了一个 Imagick 对象并读取了输入图像。随后,使用'cropImage()'函数根据函数中提供的参数对图像进行裁剪。输出即裁剪后的图像可以要么直接显示在服务器上,要么使用'writeImage()'函数保存到您的系统,并使用任何所需的名称和格式。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpg");
   $image->cropImage(800, 750, 200, 100);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/newimage.png");
?>

假设以下是在程序中的输入图像(image.jpg) -

Image-Cropping

输出

Image-Cropping

创建裁剪的缩略图

缩略图是以较小图像形式表示的较大图像。它旨在使查看或管理一组较大图像变得更容易和更快。ImageMagick 通过提供方法‘cropThumbnailImage()’来帮助我们创建裁剪的缩略图。

语法

public Imagick::cropThumbnailImage(int $width, int $height, bool $legacy = false): bool

此方法通过首先向上或向下缩放图像并从中心裁剪指定区域来帮助创建固定尺寸的缩略图。

此方法接受 2 个参数,宽度和高度。它们分别指定缩略图的宽度和高度。

示例

在下面的示例中,创建了 imagick 对象。然后,使用‘cropThumbnailImage()’函数获取固定尺寸的缩略图,并使用‘writeImage()’函数获取输出。

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

假设以下是在程序中的输入图像(image.jpg) -

Creating a Cropped Thumbnail

输出

Creating a Cropped Thumbnail

图像切除

有时,在选择图像时,不需要整个图像。在您需要图像的一部分或图像的特定区域的情况下,‘chopImage()’函数可以帮助我们。此函数帮助我们去除图像的某个区域,并根据用户的规范修剪图像。

语法

public Imagick::chopImage (int $width, int $height,int $x,int $y): bool

此函数接受 4 个参数,即

  • 宽度 - 宽度也是一个整数,存储切除区域的宽度。

  • 高度 - '高度'是一个整数,存储切除区域的高度

  • x - 切除区域的 x 坐标。

  • Y - 切除区域的 y 坐标。

示例

在以下示例中,您将学习如何使用'chopImage()'函数。首先,创建一个 Imagick 对象并将其作为输入图像。

然后,将'chopImage()'应用于图像,参数为宽度、高度、x 坐标和 y 坐标。

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

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

Chopping Images

输出

Chopping Images

PHP ImageMagick - 图像边框

在数字显示器上显示的每张图片都有黑色或白色或彩色的背景。因此,在背景和照片之间进行分离对于定义图像的视觉限制至关重要。

在黑色或白色背景下,这种分离的必要性更加突出。因此,为了达到这个目的,必须在照片中添加边框。在本节中,您将学习如何使用 Imagemagick 的一些内置函数在 PHP 中为图像添加边框。

添加 3D 边框

可以使用 Imagemagick 提供的内置函数“frameImage()”为图像添加 3D 边框。

语法

public Imagick::frameImage(mixed $matte_color, int $width, int $height, int $inner_bevel, int $outer_bevel): bool

此方法接受 5 个参数

  • 蒙版颜色 - 它是一个表示蒙版颜色的字符串。

  • 宽度 - 表示边框的宽度。

  • 高度 - 表示边框的高度。

  • 内斜角 - 表示内斜角的宽度。

  • 外斜角 - 表示外斜角的宽度。

获得的输出是带有指定测量值和颜色的边框的图像。

示例

以下程序演示了如何在 PHP 中使用 Imagick 库来创建一个新的图像文件。它使用现有图像创建 Imagick 类的对象,在其周围添加一个具有特定参数的框架(在本例中为粉红色和 100x100 像素,边框为 10 像素),然后将修改后的图像写入为 PNG 文件。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpg");
   $image->frameImage('pink', 100, 100, 10, 10);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/newimage.png");
?>

假设以下是在程序中的输入图像(image.jpg) -

Adding 3D Border

输出

Adding 3D Border

添加普通边框

Imagemagick 提供了一个方法‘borderImage()’,该方法为图像添加边框。它将图像作为输入,并输出带有边框的图像。

语法

public Imagick::borderImage(mixed $bordercolor, int $width, int $height): bool

此函数有 3 个参数,分别是边框颜色、宽度和高度。

  • 边框颜色 是一个imagickpixel对象或包含边框颜色的字符串。

  • 宽度高度是分别保存边框宽度和高度的整数值。

示例

以下程序演示了如何在 PHP 中使用 Imagick 库来创建具有 25 像素黄色边框的图像。它从“test/image.png”文件读取图像,并将其写入“test/borderImage.png”,并添加边框。

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

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

Adding a Normal Border

输出

Adding a Normal Border

PHP ImageMagick - 图像大小调整

在本节中,您将学习如何使用 Imagemagick 提供的各种内置函数自适应调整图像大小并缩放图像以适应特定尺寸。

使用 ImageMagick 调整图像大小时,您可以通过两种不同的方式实现:缩放或裁剪。缩放会导致尺寸成比例地增加或减少,而裁剪则会根据用户设置的特定参数裁剪原始图像的一部分。

自适应调整图像大小

在许多情况下,我们希望将图像稍微缩小到较小的“网页尺寸”。为此,Imagemagick 提供了一个名为“adaptiveResizeImage()”的方法,该方法有助于自适应调整图像大小。这也避免了在颜色变化明显的区域出现模糊。

语法

public Imagick::adaptiveResizeImage(int $columns, int $rows, bool $bestfit = false, bool $legacy = false): bool

此方法的参数为列数、行数最佳适应

  • 列数指定缩放图像中的列数。

  • 行数表示缩放图像中的行数

  • 最佳适应指定是否将图像拟合到边界框内。

示例

以下示例用于演示如何在 PHP 中实现此函数。首先创建一个新的 Imagick 对象并获取输入图像。然后,在该输入图像上应用'adaptiveResizeImage()'方法。最后,将输出图像保存为'adaptiveResizeImage.png'

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

假设以下是在程序中的输入图像(image.jpg) -

Resizing Images Adaptively

输出

Resizing Images Adaptively

将图像缩放至所需尺寸

为了使图像适合网站,必须有一些所需的尺寸。将图像缩放至这些尺寸将删除不必要的像素或创建或添加新的像素细节。ImageMagick 允许我们使用‘resizeImage()’方法在 PHP 中调整图像大小。它将图像作为输入,并根据所需尺寸调整其大小,并提供输出。

为了确保图像适合网站,必须将其缩放至特定尺寸。ImageMagick 的'resizeImage()'方法允许我们在 PHP 中执行此操作,它将图像作为输入,并根据所需尺寸调整其大小,并返回结果图像。

语法

public Imagick::resizeImage(int $columns, int $rows, int $filter, float $blur, bool $bestfit=false, bool $legacy=false):bool

resizeImage()方法的参数为列数、行数、滤镜、模糊度和最佳适应。

  • 列数行数是分别指定图像宽度和高度的整数值。

  • 滤镜是一个整数值,指的是滤镜常量列表,如 filter_point、filter_box、filter_triangle 等。

  • 模糊度因子是浮点值。如果模糊度因子大于 1,则图像模糊;如果小于 1,则图像清晰。

  • 最佳适应是一个可选的拟合参数。

示例

以下是使用 PHP 调整图像大小的示例。在这里,我们创建了一个新的 Imagick 对象和一个空图像(作为输入)。然后,在创建的图像上调用'resizeImage()'方法。输出将为 PNG 格式,名为'resizeImage'

<?php
   $img=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpg");
   $img->resizeImage(200, 300, null, null, null, null);
   $img->writeImage($_SERVER['DOCUMENT_ROOT']."/test/newimage.png");
?>

假设以下是在程序中的输入图像(image.jpg) -

Scaling Images to Desired Dimensions

输出

Scaling Images to Desired Dimensions

PHP ImageMagick - 图像合成

将两张或多张图像组合成一张新图像称为合成摄影。组合后的照片称为合成图像。将来自不同来源的视觉元素组合到单个图像中通常是为了创造一种错觉,即所有这些元素都是同一图像的一部分。

手动执行此操作将成为一项非常复杂的任务,需要花费数小时。为了使此过程变得简单快捷,Imagemagick 提供了一个名为“compositeImage()”的方法,该方法将两张图像作为输入,并输出组合后的图像。

语法

public Imagick::compositeImage(Imagick $composite_object, int $composite, int $x, int $y, int $channel = Imagick::CHANNEL_DEFAULT): bool

此方法的参数为合成对象、x、y 和通道。“合成对象”是一个 Imagick 对象,它保存合成图像。

“x”是合成图像的列偏移量,“y”是合成图像的行偏移量。“通道”提供任何对您的通道模式有效的通道常量。

示例

此示例是实现‘compositeImage()’函数的 PHP 代码片段。首先,创建两个 imagick 对象,并获取两个图像作为输入。借助‘compositeImage()’函数合成这两个图像,输出图像的格式为“compositeImage.png”。

<?php
   $image1=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image1.jpg");
   $image2=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image2.jpg");
   $image1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
   $image1->setImageArtifact('compose:args', "1,0,-0.5,0.5");
   $image1->compositeImage($image2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);
   $image1->writeImage($_SERVER['DOCUMENT_ROOT']."/test/compositeImage.png");
?>

假设以下是程序中的输入图像 (image1.jpg) -

Composite Images

假设以下内容是程序中的输入图像(image2.jpg) -

Composite Images

输出

Composite Images

PHP ImageMagick - 对比度和亮度

借助对比度,可以在图像中传达不同类型的情绪。“对比度”一词指的是颜色或灰度差异的数量。对比度较高的图像通常显示出比对比度较低的图像更大的颜色或灰度变化。在本节中,您将学习如何更改和调整对比度和亮度。

更改对比度

在本节中,您将学习更改对比度的过程。这可以通过 Imagemagick 提供的一种名为“contrastImage()”的方法来完成。它有助于增强图像中较亮和较暗元素之间的差异。

语法

public Imagick::contrastImage(bool  $sharpen): bool

此方法包含一个名为“sharpen”的单个参数。它是一个布尔值,指定锐化值。此方法将图像作为输入,并在更改其对比度后输出图像。

示例

在下面的示例中,创建了一个新的 Imagick 对象并获取了输入图像。然后,将contrastImage()函数应用于该图像。最后,以“contrastImage.png”格式获取输出图像。

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

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

Changing the Contrast

输出

Changing the Contrast

更改亮度

ImageMagick 提供了一种名为“brightnessContrastImage()”的方法,该方法可以更改图像的亮度和对比度。它将亮度和对比度参数转换为斜率和截距,并调用多项式函数应用于图像。

语法

Public Imagick::brightnessContrastImage(float $brightness, float $contrast, int $channel=Imagick::CHANNEL_DEFAULT):bool

此方法包含 3 个参数,分别是亮度、对比度和通道。“Brightness”用于存储亮度值,“contrast”用于存储图像对比度值,“channel”用于存储通道值。获得的输出是添加了亮度和对比度的图像。

示例

在下面的示例中,创建了一个新的 Imagick 对象并获取了输入图像。然后,将“brightnessContrastImage()”函数(参数为 brightness=15,contrast=20)应用于该图像。最后,以“brightnessContrastImage.png”格式获取输出图像。

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

假设以下内容是程序中的输入图像(image5.jpeg) -

Changing the Brightness

输出

Changing the Brightness

增强对比度

增强是提高图像质量的过程。为了增强对比度,Imagemagick 提供了一种名为“contrastStretchImage()”的方法,该方法通过调整像素的颜色以跨越所有可用的颜色范围来增强彩色图像的对比度。

语法

public Imagick::contrastStretchImage(float $black_point, float $white_point, int $channel = Imagick::CHANNEL_DEFAULT): bool

此方法具有三个参数,分别是 black_point、white_point 和 channel。“Black_point”指定黑点,“white_point”指定白点,“channel”提供任何对您的通道模式有效的通道常量。

示例

在下面的示例中,创建了一个新的 Imagick 对象并获取了输入图像。然后,将“contrastStretchImage()”函数(参数为 black_point=1000,white_point=5000)应用于该图像。最后,以“contrastStretchImage.png”格式获取输出图像。

此方法具有三个参数,分别是 black_point、white_point 和 channel。“Black_point”指定黑点,“white_point”指定白点,“channel”提供任何对您的通道模式有效的通道常量。

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

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

Enhance Contrast

输出

Enhance Contrast

PHP ImageMagick - 增强和均衡化

增强图像

图像增强是提高图像视觉外观或质量的过程。这可以通过多种技术来实现,例如调整亮度和对比度、色彩平衡、锐化或模糊边缘、更改分辨率和降噪。

Imagemagick 提供了一个名为“enhanceImage()”的函数。它将图像作为输入,通过提高其质量来增强图像,并产生增强的图像作为输出。

语法

public Imagick::enhanceImage(): bool

此函数没有参数。

示例

此示例表示实现“enhanceImage()”函数的 PHP 代码。首先创建新的 imagick,然后应用“enhanceImage()”函数,并以“enhanceImage.png”格式获取输出。

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

假设以下是在程序中的输入图像(image.jpg) -

Enhancing_Images

输出

Enhancing_Images

均衡图像

均衡图像是一个调整图像中对比度和亮度的过程,使其看起来更加平衡。均衡有助于突出阴影和高光中的细节,以及提高色彩准确性和减少噪声。

在此过程中,对比度可以根据直方图均衡(一种计算机图像处理技术)来增加或减少。在本节中,您将学习如何使用 Imagemagick 提供的“equalizeImage()”函数来均衡图像。

语法

public Imagick::equalizeImage(): bool

此函数没有参数。它将图像作为输入,并产生均衡后的图像作为输出。

示例

此示例显示了在 PHP 中实现“equalizeImage()”函数。在创建 Imagick 对象后读取输入图像,然后将“equalizeImage()”函数应用于该输入图像。最终的输出图像以“equalizeImage.png”格式获取。

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

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

Equalizing Images

输出

Equalizing Images

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 Image magick 库提供了一系列强大的函数,可以使用这些函数执行各种操作,包括模糊、调整大小、裁剪等。使用 PHP Imagemagick,您可以仅用几行代码轻松地模糊图像。

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

添加模糊滤镜

要向图像添加模糊滤镜,Imagemagick 提供了一种名为“blurImage()”的方法。它将图像作为输入并生成/返回模糊的图像。

语法

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

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

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

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

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

示例

在下面的示例中,创建了一个新的 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

此函数包含两个参数,分别是角度和通道。

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

  • 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) -

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 是一个浮点值,指定高斯函数的标准差(以像素为单位)。

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

  • 通道是有效的通道模式常量。

示例

在下面的示例中,创建了一个新的 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

PHP ImageMagick - 图像平铺

在本节中,您将学习如何重复平铺纹理图像。平铺纹理图像是在纹理图像以平铺形式重复显示的情况下创建图案的过程。

使用 ImageMagick,您可以轻松地将图像平铺成相同大小的块。您还可以调整每个块的大小和方向,从而可以根据需要自定义平铺图像。在本教程中,我们将解释如何使用 PHP ImageMagick 的 Image tile 在创建令人惊叹的美丽平铺图像时获得完美的结果!

语法

Imagick::textureImage(Imagick $texture_wand): Imagick

此函数包含一个参数

  • “texture_wand”。它是一个用作纹理图像的 Imagick 对象。

  • 下面的示例是一个用于平铺图像的程序。除了“textureImage()”之外,此程序还使用了其他一些功能。

  • 创建新图像 - 它涉及使用“newImage()”函数创建新图像,该函数将列大小和行大小作为参数。因此,将创建一个具有这些尺寸的图像。

  • 缩放图像 - 使用“scaleImage()”函数将图像缩放到特定尺寸,并以这些尺寸缩短图像,因此可以将其平铺到我们创建的新图像上。

此函数将图像作为输入,获得的输出是包含纹理图像平铺图案的图像。

示例

以下示例显示了“textureImage()”函数的实现。在这里,使用指定的尺寸和颜色作为参数创建了一个新的 Imagick 对象。

  • 图像格式也已设置。然后,通过创建一个新的 Imagick 对象将图像作为输入获取。

  • 现在,使用“scaleImage()”函数将图像缩放到某个特定尺寸。

  • 在使用‘textureImage()’函数创建的初始图像上,连续平铺缩放后的图像。

  • 最终输出以‘textureImage.png’的形式获得。

<?php
   $img=new Imagick();
   $img->newImage(940, 670, new ImagickPixel('red'));
   $img->setImageFormat("jpg");
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpeg");
   $image->scaleimage($image->getimagewidth() / 8, $image->getimageheight() / 8);
   $img=$img->textureImage($image);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/textureImage.png");
?>

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

Image Tiling

输出

Image Tiling

PHP ImageMagick - 图像阈值

在本章中,您将学习如何使用 ImageMagick 库的一些内置函数创建不同类型的阈值图像。

PHP Imagemagick 提供了广泛的功能,包括图像阈值化。图像阈值化允许您通过设置特定限制或“阈值”来调整图像的对比度,该限制或“阈值”决定了图像中像素的明暗程度。

这使得可以创建具有物体和背景之间锐利边缘的高对比度图像,以及没有突兀过渡的平滑渐变。通过使用 PHP Imagemagick 的图像阈值功能,用户可以轻松地改善他们的数码照片和图形。

创建黑色阈值图像

'blackThresholdImage()' 函数是 Imagemagick 库的一部分。它可以用来快速轻松地修改图像,方法是应用一个阈值,该阈值将与输入图像中的所有像素进行比较。

任何值低于指定阈值的像素将变为黑色,而任何值高于阈值的像素将保持不变。

语法

public Imagick::blackThresholdImage(mixed $threshold): bool

此函数只有一个参数,即‘threshold’。它指定了与图像所有像素进行比较的阈值。

示例

此示例展示了'blackThresholdImage()' 函数的使用。创建一个 Imagick 对象,并以图像作为输入。应用'blackThresholdImage()'函数,并将其参数设置为阈值,最终生成输出图像并保存为'blackThresholdImage.png'

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.png");
   $image->blackThresholdImage('rgb(1, 255, 141)');
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/blackThresholdImage.png");
?>

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

Creating Black Threshold Image

输出

Creating Black Threshold Image

创建白色阈值图像

'whiteThresholdImage()' 函数允许您设置一个指定的阈值,然后将其应用于输入图像的所有像素。低于阈值的值将转换为白色,而高于阈值的值将保持不变。

这对于图像分割或噪声去除等任务非常有用,因为它允许您快速识别需要进一步关注的图像部分。

语法

public Imagick::whiteThresholdImage(mixed $threshold): bool

它只有一个参数 - ‘threshold’。它指定了与图像所有像素进行比较的阈值。

示例

以下示例演示了如何使用'whiteThresholdImage' 函数。在此,创建一个 Imagick 对象并以图像作为输入。然后应用 'whiteThresholdImage' 函数,并将其参数设置为阈值。生成的图像将保存为'whiteThresholdImage.png'

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/imagee.png");
   $image->whiteThresholdImage('rgb(1, 255, 141)');
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/whiteThresholdImage.png");
?>

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

Creating White Threshold Image

输出

Creating White Threshold Image

PHP ImageMagick - 修改颜色

在本章中,您将学习如何使用 Imagemagick 提供的一些内置函数来修改和替换图像中的不同颜色。

使用 Imagemagick,您可以调整亮度、对比度、色相、饱和度和其他颜色参数。您甚至可以创建复杂的特效,例如合并多个图层或为照片添加特殊滤镜。本教程将概述 PHP Imagemagick 的工作原理以及如何使用它来快速轻松地修改数字图像中的颜色。

着色图像

Imagemagick 的 'colorizeImage()' 函数是更改图像任何部分颜色的有效方法。此函数通过将选定的填充颜色与图像中的每个像素混合来工作,在颜色之间创建无缝过渡,并产生专业外观的结果。

  • 此过程消除了与更改图像上的颜色相关的大部分手动工作,例如选择特定区域或手工绘制部分。

  • 此外,它节省了时间,因为它允许用户快速轻松地进行这些更改,而不会牺牲质量。

语法

public Imagick::colorizeImage(mixed $colorize, mixed $opacity, bool $legacy = false): bool

此函数接受 2 个参数 - colorizeopacity

  • Colorize 是一个 Imagick 对象或包含着色颜色的字符串,

  • opacity 是一个 Imagick 对象或包含不透明度值的浮点数。

如果 opacity 为 1.0,则表示完全不透明,0.0 表示完全透明。

示例

在此示例中,您将能够清楚地理解‘colorizeImage()’ 的用法。首先创建一个 imagick 对象并获取输入图像。然后,应用‘colorizeImage()’ 函数并传入所需的参数(colorize=red 和 opacity=1)。使用‘writeImage()’ 函数显示混合颜色后的图像作为输出。

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

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

Colorize Image

输出

Colorize Image

创建蓝色偏移图像

当需要在月光下或夜间表示图像时,您可以使用‘blueShiftImage()’ 方法。此方法将图像作为参数,并使图像的颜色变暗以模拟月光下的夜间场景,并生成输出图像。

  • 它可能还涉及调整亮度级别、饱和度、对比度和其他功能,以确保最终结果尽可能接近在自然光线下查看这些图像时可能期望的结果。

  • 此外,此技术可用于创意目的;通过操纵颜色值,可以在黄昏时分拍摄的照片甚至在人造灯光下的室内照片中获得有趣的特效。

语法

public Imagick::blueShiftImage(float $factor = 1.5): bool

此函数将因子值作为其参数。它指定了使图像颜色变暗的值。

示例

此示例显示了‘blueShiftImage()’ 函数的实现。创建一个新的 imagick 对象并以图像作为输入。现在,应用‘blueShiftImage()’ 函数,并将其参数设置为因子,得到的输出图像格式为‘blueShiftImage.png’。

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

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

Creating Blue Shift Image

输出

Creating Blue Shift Image

替换图像中的颜色

在本节中,您将学习如何替换图像中的颜色。Imagemagick 中有一个名为‘clutImage()’ 的内置函数来执行此任务。借助此函数,图像中的所有颜色都将替换为用户需要的特定颜色。此函数将图像作为输入,并生成替换颜色后的图像作为输出。

'clutImage()' 函数用途广泛,可用于实现各种不同的效果。例如,您可以使用它通过将原始图像中的所有颜色替换为单一颜色来创建单色图像。

您还可以使用它通过将暗淡的色调替换为更明亮的色调来为现有照片添加活力和对比度。

语法

public Imagick::clutImage(Imagick $lookup_table, int $channel =Imagick::CHANNEL_DEFAULT): bool

此函数接受 2 个参数。

  • lookup_table,它是包含颜色查找表的 Imagick 对象

  • channel,它是 Channeltype 常量。

示例

在以下示例中,创建一个<>bImagick 对象,并以图像作为其输入。然后创建一个第二个 Imagick 对象并生成一个新图像,该图像从查找表中选择“紫色”。`clutImage()` 方法用于替换颜色,其中已指定“紫色”,并且没有声明 ChannelType 常量;因此,将使用默认通道。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/imagee.png");
   $clut = new Imagick();
   $clut->newImage(1, 1, new ImagickPixel('violet'));
   $image->clutImage($clut);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/clutImage.png");
?>

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

Replacing Colors Images

输出

Replacing Colors Images

图像的反转

反转图像中的颜色意味着颜色反转或倒置。例如,假设一个图像包含白色和黑色。反转颜色后,白色变为黑色,黑色变为白色。

'negateImage()' 函数用于在 PHP ImageMagick 中反转颜色,

您还可以使用此效果通过将浅色调更改为深色调或深色调更改为亮色调来创建高对比度图像。此外,可以通过应用部分颜色反转来实现图像中更微妙的颜色变化;这意味着只有图像的某些部分受到影响,而其他部分保持不变。

语法

public Imagick::negateImage(bool $gray, int $channel =Imagick::CHANNEL_DEFAULT): bool

此函数接受 2 个参数:gray 和 channel。

  • Gray 是一个布尔值,用于决定是否反转图像中的灰度像素。

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

要应用多个通道,必须使用按位运算符组合channelType 常量。

示例

在下面的示例中,您可以清楚地理解‘negateImage()’ 函数的实现。首先,创建一个新的 imagick 对象并输入图像。然后对图像应用‘negateImage()’ 函数,并借助’writeImage()’ 函数显示输出图像。

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

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

Negation Images

输出

Negation Images

PHP ImageMagick - 不同的效果

创建 3D 效果

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

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

语法

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

此函数接受 3 个参数:gray、azimuth 和 elevation。

  • 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) -

Creating 3D Effect

输出

Creating 3D Effect

创建太阳化效果

照相胶片过度曝光时看到的效应称为太阳化效果。要在 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) -

Creating Solarizing Effect

输出

Creating Solarizing Effect

创建波浪滤镜效果

Imagemagick 提供了一个名为‘waveImage()’ 的内置函数,可帮助模拟图像上的波浪滤镜。它将图像作为输入,得到的输出是带有波浪滤镜的图像。

语法

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

此函数有两个参数:amplitude 和 length。

  • 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) -

Creating Wave Filter Effect

输出

Creating Wave Filter Effect

创建漩涡效果

在本章中,您将学习如何旋转图像。通常,旋转意味着以扭曲或圆周运动快速移动。包含此类效果的图像称为旋转图像。手动创建旋转图像很困难。但是,为了简化此操作,Imagemagick提供了一个内置函数‘swirlImage()’,它可以围绕图像中心旋转像素。

语法

Imagick::swirlImage(float $degrees): bool

此函数接受一个参数:degrees。'Degrees'是一个浮点值,指示每个像素移动的弧线的扫描范围。通过此操作,您可以获得更戏剧性的效果,因为角度从1移动到360。

示例

在下面的示例中,您首先创建一个新的Imagick对象并输入图像。然后,通过指定角度(degrees=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) -

Creating Swirl Effect

输出

Creating Swirl Effect

PHP ImageMagick - 保护图像

在本章中,您将学习如何保护图像,以便只有发送者和预期的接收者才能在网页上查看图像。

PHP Imagemagick提供图像处理和操作,允许您保护图像免遭盗窃或未经授权的使用。现在,我们将讨论PHP Imagemagick的功能以及它们如何帮助您保护图像安全。

加密图像

Imagemagick中名为‘encipherImage()’的内置函数有助于加密图像。将普通像素图像转换为加密像素的过程在此函数中发生。只有可以使用给定密钥('passphrase')解密图像的查看者才能查看加密图像。

语法

public Imagick::encipherImage(string $passphrase): bool

此函数接受一个参数'passphrase',该参数充当加密和解密图像的密钥。它将图像作为输入,使用密码短语加密图像,并生成加密后的图像作为输出。

示例

在下面的示例中,展示了‘encipherImage()’函数的实现。首先,必须创建一个新的Imagick对象并输入图像。定义'Passphrase',它是一个作为参数传递的字符串。然后,借助密码短语应用‘encipherImage()’函数,并获得加密后的图像作为输出。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpeg");
   $passphrase="Tutorials Point";
   $image->encipherImage($passphrase);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/encipherImage.png");
?>

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

Enciphering Image

输出

Enciphering Image

解密图像

Imagemagick提供了一个内置函数‘decipherImage()’,它有助于解密图像。将加密图像转换为普通图像的过程称为解密图像。此函数将加密图像作为输入,使用密码短语将该图像转换为普通图像,并生成普通图像作为输出。

语法

public Imagick::decipherImage(string $passphrase): bool

此函数将'passphrase'作为参数。它有助于解密图像。

示例

以下示例演示了如何实现'decipherImage()'函数。首先,创建一个新的Imagick对象并将图像作为输入传递。您还需要定义一个作为参数传递的密码短语字符串。最后,使用'decipherImage()'函数和您的密码短语来获得解密后的图像作为输出。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/encipherImage.png");
   $passphrase="Tutorials Point";
   $image->decipherImage($passphrase);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/decipherImage.png");
?>

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

Deciphering Image

输出

Deciphering Image

PHP ImageMagick - 模拟素描

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

模拟炭笔画

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

语法

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

此函数接受2个参数:radius和sigma。

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

  • 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个参数:radius、sigma和angle。这些都是浮点值。'Radius'指定高斯函数的半径(以像素为单位),'sigma'指定高斯函数的标准差(以像素为单位),'angle'指定必须应用效果的角度,并指定模糊运动的角度。

示例

这是一个展示如何实现‘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

模拟油画

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

语法

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

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

示例

这是一个展示如何实现‘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

PHP ImageMagick - 编辑外观

在本章中,您将探索如何使用Imagemagick的内置函数来编辑图像。您将学习如何在图像边缘创建褪色和圆角外观,将其包裹在平行四边形形状中,甚至模拟宝丽来效果。

晕影图像

“晕影”一词指的是一张小照片或图像,其背景具有褪色外观,并且没有明确的边界。具有此效果可以突出显示图像的某些方面。因此,为了获得此滤镜中的图像,Imagemagick提供了一个内置函数‘vignetteImage()’。此函数将图像作为输入,应用晕影滤镜,并获得边界模糊的图像。

语法

public Imagick::vignetteImage(float $blackPoint, float $whitePoint, int $x, int $y): bool

此函数有4个参数:blackpoint、whitepoint、x和y。'Blackpoint'和'whitepoint'是浮点值。'x'是一个整数值,指定椭圆的'x'偏移量,'y'是一个整数值,指定椭圆的'y'偏移量。

示例

为了更好地理解‘vignetteImage()’函数,请查看以下示例。首先创建一个Imagick对象并输入图像。然后,使用所有指定的参数(blackpoint=30,whitepoint=10,x=40,y=20)应用'vignetteImage'函数。最后,使用‘writeImage()’函数获得输出。

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

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

Vignette Image

输出

Vignette Image

圆角

有一个基本信念,即圆角更容易被眼睛接受。也就是说,它们分别适合头部和眼睛的自然运动。圆角图像还可以使图像看起来更整洁和美观。

要圆角图像,Imagemagick提供了一个名为‘roundCorners()’的内置函数。此函数将图像作为输入,圆角图像,并生成该图像作为输出。

语法

public Imagick::roundCorners(
   float $x_rounding,
   float $y_rounding,
   float $stroke_width =10,
   float $displace =5,
   float $size_correction =-6
): bool

此函数有5个参数:x_rounding、y_rounding、strike_width、displace和size_correction。'x_rounding'和'y_rounding'是浮点值,它们控制圆角的程度。'stroke_width'、'displace'和'size-correction'也是浮点值,用于微调圆角过程。

示例

通过此示例,您将能够清楚地理解此函数的用法。首先通过创建一个新的Imagick对象将图像作为输入。使用指定的参数(x_rounding=20,y_rounding=20,stroke-width=5,displace=5,size-correction=-10)将‘roundCorners()’函数应用于该图像。然后,使用函数‘writeImage()’获得输出图像。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/imagee.png");
   $image->roundCorners(20, 20, 5, 5, -10);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/roundCornerImage.png");
?>

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

Rounding Corners

输出

Rounding Corners

宝丽来图像

在本章中,您将学习如何模拟宝丽来照片。宝丽来照片是由宝丽来相机拍摄的照片。它是一种拍摄照片并在几秒钟后打印的照片的相机。它是一种即时打印类型,并具有特殊类型的胶片盒。为了模拟宝丽来图像,Imagemagick提供了一个内置函数‘polaroidImage()’

语法

public Imagick::polaroidImage(ImagickDraw $properties, float $angle): bool

此函数接受2个参数:properties和angle。'Properties'指定宝丽来属性,'angle'以浮点值指定宝丽来角度。

示例

在此示例中,您创建一个新的Imagick对象并将图像作为输入。然后,通过指定参数,将'polaroidImage()'函数应用于该图像。宝丽来图像作为输出获得。

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

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

Polaroid Image

输出

Polaroid Image

创建平行四边形

在本节中,您将学习‘shearImage()’函数。它是Imagemagick提供的内置函数。它的功能是创建平行四边形。此函数将图像作为输入,并在X和Y轴上剪切图像以创建平行四边形,并添加背景颜色。

语法

public Imagick::shearImage(mixed $background, float $x_shear, float $y_shear): bool

此函数接受3个参数:background、x_shear和y_shear。'Background'指定背景颜色,'x_shear'指定在X轴上剪切的角度数,'y_shear'指定在Y轴上剪切的角度数。

示例

在下面的示例中,图像作为输入,并将‘shearImage ()’函数应用于该图像。它接受3个参数(背景颜色= rgb (100, 200, 150),x_shear=10和y_shear=10)。使用函数‘writeImage ()’显示获得的输出。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.png");
   $image->shearImage('rgb(100, 200, 150)', 10, 10);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/shearImage.png");
?>

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

Creation Parallelogram

输出

Creation Parallelogram

PHP ImageMagick - 旋转和滚动

在本章中,您将学习如何使用Imagemagick的内置函数旋转和滚动图像。

旋转图像

Imagemagick提供了一个内置函数‘rotateImage()’,用于根据指定角度旋转图像。此函数将图像作为输入,应用此函数,并旋转图像,旋转后的图像作为输出获得。

语法

public Imagick::rotateImage(mixed $background, float $degrees): bool

此函数有2个参数:background和degrees。'Background'指定背景颜色,'degrees'是一个浮点值,指定旋转角度(以度为单位)。图像按指定角度顺时针旋转。

示例

在下面的示例中,首先创建一个新的Imagick对象并输入图像。将‘rotateImage()’函数应用于该图像,并将图像旋转到指定角度。借助'writeImage()'函数,旋转后的图像作为输出获得。

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

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

Rotating Image

输出

Rotating Image

滚动图像

您是否曾经观察过滚动的过程?您正在滚动的那个东西是通过旋转或反复翻转来移动的。滚动图像也意味着相同。它只不过是偏移图像。

为此目的,ImageMagick提供了一个内置函数‘rollImage()’,它将图像作为输入,滚动图像,并获得滚动的图像作为输出。

语法

public Imagick::rollImage(int $x, int $y): bool

此函数接受2个参数:x和y。'x'和'y'是整数值,它们分别指定x偏移量和y偏移量。

示例

在此示例中,通过创建一个新的Imagick对象将图像作为输入。然后,借助指定的a和y偏移量(x=30,y=40)将‘rollImage()’函数应用于它。滚动的图像作为输出获得。

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

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

Rolling Image

输出

Rolling Image

PHP ImageMagick - 拼接和扩散

在本章中,您将学习如何使用Imagemagick的一些内置函数来扩散和拼接图像。

图像扩散

在本节中,您将学习如何使用Imagemagick提供的‘spreadImage()’函数轻松扩散图像。扩散图像是在块中随机位移每个像素。

语法

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

此函数仅接收一个参数:radius。‘Radius’ 是一个浮点值,用于指定每个像素在块中位移的值。

示例

在下面的示例中,创建了一个 Imagick 对象并输入一个图像。现在,‘spreadImage()’ 函数应用于图像,并带有一个参数 (radius=5)。然后,最终图像作为输出显示。

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

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

Image Spreading

输出

Image Spreading

图像拼接

在本章中,您将学习如何使用 Imagemagick 中名为 ‘spliceImage()’ 的内置函数将纯色拼接至图像。此函数接收一个图像作为输入,并将纯色使用指定的参数(拼接的尺寸和位置)拼接至图像。

语法

public Imagick::spliceImage(
   int $width,
   int $height,
   int $x,
   int $y
): bool

此函数包含 4 个参数:width、height、x 和 y。‘Width’ 和 ‘height’ 是整数值,分别指定拼接的宽度和高度。‘x’ 和 ‘y’ 也是整数值,分别指定 X 轴和 Y 轴上的位置。

示例

在下面的示例中,创建了一个 Imagick 对象并输入一个图像。在此图像上,‘spliceImage()’ 函数应用于参数 (width=50, height=100, x=100, y=50)。然后,拼接后的图像作为输出获取。

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

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

Image Splicing

输出

Image Splicing

PHP ImageMagick - 其他函数

应用函数

我们在“预定义常量”章节中了解了 ImageMagick 中的预定义常量。为了应用这些函数常量,ImageMagick 提供了一个内置函数 `functionImage()`,它包含三个函数:undefined、polynomial 和 sinusoid。您可以使用此函数将这些常量应用于图像。

语法

public Imagick::functionImage(int $function, array $arguments, int $channel = Imagick::CHANNEL_DEFAULT): bool

此函数主要包含 2 个参数:function 和 arguments。

  • Function 指的是函数常量列表(sinusoid 或 polynomial)。

  • Arguments 指定以数组格式传递给函数的参数。

要应用函数,我们需要使用 ‘newPseudoImage()’ 函数创建一个新图像,然后在该图像上通过指定参数应用此函数。它不接收任何输入,但在应用函数后生成输出。

示例

在此示例中,您可以看到 Imagemagick 中函数 ‘functionImage()’ 的实现。此代码包括创建新的 Imagick 对象并输入图像。

使用 ‘newPseudoImage()’ 函数创建了一个新图像,并使用所需的尺寸,然后应用函数。要应用的函数作为 ‘functionImage()’ 函数中的一个参数指定。使用 ‘writeImage()’ 显示获得的输出图像。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image5.jpeg");
   $image->newPseudoImage(500, 400, 'gradient:white-brown');
   $image->functionImage(Imagick::FUNCTION_SINUSOID, array(19, 33));
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/functionImage.png");
?>

输出

Applying Functions

图像注释

为了识别整个图像或图像的含义,必须对图像进行注释。图像注释是添加到图像中的以文本形式表示的解释方式。为此,Imagemagick 库提供了 ‘annotateImage()’ 函数。

语法

public Imagick::annotateImage(ImagickDraw $draw_settings,float $x, float $y, float $angle, string $text): bool

此函数有 5 个参数,分别是 draw-settings、x、y、angle 和 text。‘draw_settings’ 是一个 ImageMagick 对象,其中包含绘制文本的设置。

  • x 是文本左侧的水平偏移量(以像素为单位)。

  • y 是文本基线的垂直偏移量(以像素为单位)。

  • angle 指定必须写入文本的角度。

  • text 是要绘制的字符串。

此函数接收一个图像作为输入,并获得带有某些注释文本的图像作为输出。

示例

在以下示例中,我们创建一个新的 Imagick 对象($img)并将图像传递给它。然后,创建一个新的 ImagickDraw 对象($draw),并在该绘制对象上设置字体大小。

最后,在创建的 Imagick 对象('$img')上使用 'annotateImage()',将绘制对象、x 坐标、y 坐标、角度和文本作为参数传递。获得的输出形式为 'annotateImage.png'。

<?php
   $draw=new ImagickDraw();
   $img=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpeg");
   $draw->setFontSize(30);
   $img->annotateImage($draw, 525, 820, 0, 'HAPPY DIWALI');
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/annotateImage.png");
?>

假设以下是程序中的输入图像 (image.jpeg) &minnus;

Image Annotation

输出

Image Annotation

图像组合

附加一组图像是指将所有图像组合在一起,以便每个图像都附加到另一个图像的末尾,依此类推。为此,Imagemagick 提供了一个内置函数 ‘appendImages()’,您可以在其中将一组图像附加到更大的图像中。

语法

public Imagick::appendImages(bool $stack): Imagick

此函数接收一个布尔类型的参数 ‘stack’。此值用于确定是垂直还是水平堆叠图像。‘stack’ 的默认值为 false。这意味着图像从左到右堆叠。如果 ‘stack’ 值为 true,则图像从上到下堆叠。

示例

以下示例在 PHP 中实现了 ‘appendImages()’ 函数。在此示例中,创建了 5 个具有相同尺寸但颜色不同的新图像。然后,使用 ‘resetIterator()’ 重置像素迭代器,然后使用 ‘appendImages()’ 函数附加所有创建的图像,并获得输出。

<?php
   $image=new Imagick();
   $image->newImage(100, 100, "black");
   $image->newImage(100, 100, "white");
   $image->newImage(100, 100, "black");
   $image->newImage(100, 100, "white");
   $image->newImage(100, 100, "black");
   $image->resetIterator();
   $combined=$image->appendImages(false);
   $combined->writeImage($_SERVER['DOCUMENT_ROOT']."/test/appendImages.png");
?>

输出

Grouping Images
广告