PHP ImageMagick - 其他函数

应用函数

我们在"预定义常量"一章中了解了 ImageMagick 中的预定义常量。 为了应用这些函数常量,ImageMagick 提供了一个内置函数 `functionImage()`,其中包含三个函数:undefined、多项式和正弦曲线。 您可以使用此函数将这些常量应用于图像。

语法

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

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

  • function 是指函数常数列表(正弦曲线或多项式)。

  • 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");
?>

输出

应用函数

图像注释

为了识别整个图像或图像的含义,必须对图像进行注释。 图像注释是一种以添加到图像的文本形式进行解释的方式。 为此,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;

图像注释

输出

图像注释

对图像进行分组

附加一组图像是将所有图像分组在一起的过程,以便每个图像附加到另一个图像的末尾,依此类推。 为此,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");
?>

输出

分组图像