PHP ImageMagick - 各種效果



建立3D效果

具有高度、寬度和深度的影像稱為三維 (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) −

Creating 3D Effect

輸出

Creating 3D Effect

建立太陽化效果

當攝影膠片嚴重曝光過度時看到的這種效果稱為太陽化效果。要在 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) −

Creating Solarizing Effect

輸出

Creating Solarizing Effect

建立波浪濾鏡效果

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

Creating Wave Filter Effect

輸出

Creating Wave Filter Effect

建立漩渦效果

在本節中,您將學習如何旋轉影像。通常,旋轉意味著以扭曲或圓周運動快速移動。包含此類效果的影像稱為旋轉影像。手動建立旋轉影像很困難。但是,為了簡化此過程,ImageMagick 提供了一個名為 **‘swirlImage()’** 的內建函式,它可以圍繞影像中心旋轉畫素。

語法

Imagick::swirlImage(float $degrees): bool

此函式採用單個引數:角度。‘角度’ 是一個浮點值,表示每個畫素移動的弧度的掃描範圍。透過這種方式,當角度從 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
廣告