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 ImageMagick 庫提供了一系列強大的函式,我們可以使用這些函式執行各種操作,包括模糊、縮放、裁剪等等。使用 PHP ImageMagick,你可以僅用幾行程式碼輕鬆模糊影像。

你還可以調整模糊強度以及其他幾個設定以達到所需效果。無論你是在尋找照片的細微變化還是戲劇性的變化,PHP ImageMagick 都能滿足你建立令人驚歎效果的所有需求!

新增模糊濾鏡

要向影像新增模糊濾鏡,ImageMagick 提供了一個名為 ‘blurImage()’ 的方法。它以影像作為輸入並生成/返回模糊影像。

語法

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

此函式有 3 個引數:半徑、sigma 和通道。

  • 半徑 是一個浮點值,指定需要模糊的半徑。

  • Sigma 是一個浮點值,指定標準差。

  • 通道 指定通道型別常量。未指定通道時,所有通道都會被模糊。

示例

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

此函式包含兩個引數:角度和通道。

  • 角度是一個浮點值,用於儲存角度。

  • 通道是一個對你的通道模式有效的常量。

示例

在下面的 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 是一個浮點值,指定高斯的標準差(以畫素為單位)。

  • 角度也是一個浮點值,它指定模糊運動的角度。

  • 通道是一個對你的通道模式有效的常量。

示例

在下面的示例中,建立了一個新的 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
廣告