PHP ImageMagick - 其他函式



應用函式

我們在“預定義常量”章節中瞭解了 ImageMagick 中的預定義常量。為了應用這些函式常量,ImageMagick 提供了一個內建函式`functionImage()`,它包含三個函式:undefined、polynomial 和 sinusoid。您可以使用此函式將這些常量應用於影像。

語法

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

此函式主要包含兩個引數:函式和引數。

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

  • 引數指定以陣列格式傳遞給函式的引數。

要應用此函式,我們需要使用‘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 個引數:繪圖設定、x、y、角度和文字。’draw_settings’ 是一個 ImageMagick 物件,其中包含繪製文字的設定。

  • x 是文字左側的水平偏移量(以畫素為單位)。

  • y 是文字基線的垂直偏移量(以畫素為單位)。

  • angle 指定必須寫入文字的角度。

  • text 是要繪製的字串。

此函式將影像作為輸入,並將帶有某些註釋文字的影像作為輸出。

示例

在下面的示例中,我們建立一個新的 Imagick 物件 ($img) 並將影像傳遞給它。然後,建立一個新的 ImagickDraw 物件 ($draw),並在此 draw 物件上設定字型大小。

最後,在您建立的 Imagick 物件 ('$img') 上使用'annotateImage()',傳入您的 draw 物件、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
廣告