
- PHP ImageMagick 教程
- PHP ImageMagick - 首頁
- PHP ImageMagick - 簡介
- 背景顏色
- 影像反射
- 影像裁剪
- 影像邊框
- 影像縮放
- 合成影像
- 對比度和亮度
- 增強和均衡
- 銳化和模糊
- 影像平鋪
- 影像閾值
- 修改顏色
- 不同的效果
- 保護影像
- 素描模擬
- 編輯外觀
- 旋轉和滾動
- 拼接和擴充套件
- 其他功能
- PHP ImageMagick 有用資源
- PHP ImageMagick 快速指南
- PHP ImageMagick - 資源
- PHP ImageMagick - 討論
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 - 出現以下螢幕,單擊“下一步”。

步驟 6 - 選擇 Apache、MySQL、PHP 和 phpMyAdmin,然後單擊“下一步”。

步驟 7 - 在此步驟中,選擇任何特定資料夾,或者您可以保留原樣(預設)。單擊“下一步”。

步驟 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”的形式。


步驟 3 - 解壓縮從(b)下載的擴充套件檔案中的所有檔案。從這些檔案中,複製‘php_imagemagick.dll’檔案。
步驟 4 - 將檔案貼上到 PHP 安裝的“ext”目錄中。

步驟 5 - 解壓縮從(a)下載的安裝程式檔案中的所有檔案。從中,複製以 CORE_DL / IM_MOP_RL/FILTER 開頭的所有檔案,這些檔案都是 DLL 檔案。這些檔案從“CORE_RL_bzlib_.dll”開始,如下面的影像所示。選擇檔案,直到它們以‘IM_MOD_RL_yuv_.dll’結尾。

步驟 6 - 將這些檔案貼上到 PHP 根目錄,其中包含“php.exe”。

步驟 7 - 現在,轉到 XAMPP 控制面板。停止 Apache。
步驟 8 - 單擊“配置”並選擇 PHP(php.ini)檔案。

步驟 9 - 在該檔案中,找到程式碼中的“extensions”。在'extension=php_ftp.dll'行之後,鍵入'extension=php_imagick.dll'。儲存檔案。

步驟 10 - 重新啟動 Apache。
步驟 11 - 安裝完成。
驗證
在直接跳到執行部分之前,讓我們首先檢查 Imagemagick 是否已正確安裝在您系統的 PHP 中。為此,請按照以下步驟操作。
步驟 1 - 轉到瀏覽器並單擊“localhost”。
步驟 2 - 轉到右上角的'phpinfo'。
步驟 3 - 搜尋 Imagick。螢幕必須顯示如下。

步驟 4 - 如果出現,則表示 Imagick 設定已成功完成。此軟體包包含 Imagick 模組版本、Imagick 類、釋出日期以及所有受支援的格式。
PHP ImageMagick - 背景顏色
影像文字的背景顏色是指其背景的顏色。使用適合影像或文字上下文的顏色有助於提高可讀性,甚至更容易掃描。
例如,在下面的影像中,我們可以看到“TUTORIALS POINT”寫在普通背景上,不太容易閱讀。為該元素選擇合適的背景顏色可以提高其可見性。

如果我們檢視下面的影像,我們可以觀察到這比上一張影像更易讀,其主要原因是其背景顏色。

在以下部分中,我們將學習如何識別影像的背景顏色,以及如何為影像設定背景顏色。
識別背景顏色
要使用 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) -

輸出
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) -

輸出

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

輸出

影像翻轉
影像翻轉是指水平方向上對影像進行映象複製的過程。因此,為了翻轉影像,我們在 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) -

輸出

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

輸出

建立裁剪的縮圖
縮圖是以較小影像形式表示的較大影像。它旨在使檢視或管理一組較大影像變得更容易和更快。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) -

輸出

影像切除
有時,在選擇影像時,不需要整個影像。在您需要影像的一部分或影像的特定區域的情況下,‘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) -

輸出

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

輸出

新增普通邊框
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) -

輸出

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

輸出

將影像縮放至所需尺寸
為了使影像適合網站,必須有一些所需的尺寸。將影像縮放至這些尺寸將刪除不必要的畫素或建立或新增新的畫素細節。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) -

輸出

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

假設以下內容是程式中的輸入影像(image2.jpg) -

輸出

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

輸出

更改亮度
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) -

輸出

增強對比度
增強是提高影像質量的過程。為了增強對比度,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) -

輸出

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

輸出

均衡影像
均衡影像是一個調整影像中對比度和亮度的過程,使其看起來更加平衡。均衡有助於突出陰影和高光中的細節,以及提高色彩準確性和減少噪聲。
在此過程中,對比度可以根據直方圖均衡(一種計算機影像處理技術)來增加或減少。在本節中,您將學習如何使用 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) -

輸出

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

輸出

模糊影像
模糊影像使顏色過渡平滑。透過模糊,畫素強度的快速變化會得到平均。在本節中,您將學習如何使用 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) -

輸出

按特定角度應用模糊
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) -

輸出

模擬運動模糊
在影像中看到的運動物體中的模糊稱為“運動模糊”。為了模擬運動模糊,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) -

輸出

PHP ImageMagick - 影像平鋪
在本節中,您將學習如何重複平鋪紋理影像。平鋪紋理影像是在紋理影像以平鋪形式重複顯示的情況下建立圖案的過程。
使用 ImageMagick,您可以輕鬆地將影像平鋪成相同大小的塊。您還可以調整每個塊的大小和方向,從而可以根據需要自定義平鋪影像。在本教程中,我們將解釋如何使用 PHP ImageMagick 的 Image tile 在建立令人驚歎的美麗平鋪影像時獲得完美的結果!
語法
Imagick::textureImage(Imagick $texture_wand): Imagick
此函式包含一個引數
“texture_wand”。它是一個用作紋理影像的 Imagick 物件。
建立新影像 - 它涉及使用“newImage()”函式建立新影像,該函式將列大小和行大小作為引數。因此,將建立一個具有這些尺寸的影像。
縮放影像 - 使用“scaleImage()”函式將影像縮放到特定尺寸,並以這些尺寸縮短影像,因此可以將其平鋪到我們建立的新影像上。
下面的示例是一個用於平鋪影像的程式。除了“textureImage()”之外,此程式還使用了其他一些功能。
此函式將影像作為輸入,獲得的輸出是包含紋理影像平鋪圖案的影像。
示例
以下示例顯示了“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) -

輸出

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

輸出

建立白色閾值影像
'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) -

輸出

PHP ImageMagick - 修改顏色
在本章中,您將學習如何使用 Imagemagick 提供的一些內建函式來修改和替換影像中的不同顏色。
使用 Imagemagick,您可以調整亮度、對比度、色相、飽和度和其他顏色引數。您甚至可以建立複雜的特效,例如合併多個圖層或為照片新增特殊濾鏡。本教程將概述 PHP Imagemagick 的工作原理以及如何使用它來快速輕鬆地修改數字影像中的顏色。
著色影像
Imagemagick 的 'colorizeImage()' 函式是更改影像任何部分顏色的有效方法。此函式透過將選定的填充顏色與影像中的每個畫素混合來工作,在顏色之間建立無縫過渡,併產生專業外觀的結果。
此過程消除了與更改影像上的顏色相關的大部分手動工作,例如選擇特定區域或手工繪製部分。
此外,它節省了時間,因為它允許使用者快速輕鬆地進行這些更改,而不會犧牲質量。
語法
public Imagick::colorizeImage(mixed $colorize, mixed $opacity, bool $legacy = false): bool
此函式接受 2 個引數 - colorize 和 opacity。
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) -

輸出

建立藍色偏移影像
當需要在月光下或夜間表示影像時,您可以使用‘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;

輸出

替換影像中的顏色
在本節中,您將學習如何替換影像中的顏色。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) -

輸出

影像的反轉
反轉影像中的顏色意味著顏色反轉或倒置。例如,假設一個影像包含白色和黑色。反轉顏色後,白色變為黑色,黑色變為白色。
'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) -

輸出

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

輸出

建立太陽化效果
照相膠片過度曝光時看到的效應稱為太陽化效果。要在 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) -

輸出

建立波浪濾鏡效果
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) -

輸出

建立漩渦效果
在本章中,您將學習如何旋轉影像。通常,旋轉意味著以扭曲或圓周運動快速移動。包含此類效果的影像稱為旋轉影像。手動建立旋轉影像很困難。但是,為了簡化此操作,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) -

輸出

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

輸出

解密影像
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)−

輸出

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

輸出

模擬鉛筆素描
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) -

輸出

模擬油畫
油畫是用油性顏料製作的一種繪畫型別。無需真正使用油畫顏料,就可以使用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) -

輸出

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

輸出

圓角
有一個基本信念,即圓角更容易被眼睛接受。也就是說,它們分別適合頭部和眼睛的自然運動。圓角影像還可以使影像看起來更整潔和美觀。
要圓角影像,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) -

輸出

寶麗來影像
在本章中,您將學習如何模擬寶麗來照片。寶麗來照片是由寶麗來相機拍攝的照片。它是一種拍攝照片並在幾秒鐘後列印的照片的相機。它是一種即時列印型別,並具有特殊型別的膠片盒。為了模擬寶麗來影像,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) -

輸出

建立平行四邊形
在本節中,您將學習‘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) -

輸出

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

輸出

滾動影像
您是否曾經觀察過滾動的過程?您正在滾動的那個東西是透過旋轉或反覆翻轉來移動的。滾動影像也意味著相同。它只不過是偏移影像。
為此目的,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) -

輸出

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

輸出

影像拼接
在本章中,您將學習如何使用 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) -

輸出

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

影像註釋
為了識別整個影像或影像的含義,必須對影像進行註釋。影像註釋是新增到影像中的以文字形式表示的解釋方式。為此,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"); ?>
輸出
