如何通過imagick讓PHP生成PSD檔案縮圖(範例)

2020-07-16 10:06:05
ImageMagick是一套功能強大、穩定而且免費的工具集和開發包,可以用來讀、寫和處理超過185種基本格式的圖片檔案,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根據web應用程式的需要動態生成圖片, 還可以對一個(或一組)圖片進行改變大小、旋轉、銳化、減色或增加特效等操作,並將操作的結果以相同格式或其它格式儲存。

通過imagick讓PHP生成PSD檔案縮圖

第一步、安裝ImageMagick

首先需要安裝 ImageMagick ,因為 imagick 是一個可以供 PHP 呼叫 ImageMagick 功能的PHP擴充套件。(目前最新版本是:ImageMagick-6.8.9-5-Q16-x64-dll.exe)

安裝目錄不能有空格,我個人是安裝在 C 盤根目錄:

C:ImageMagick

一路預設安裝即可,安裝完畢後開啟 CMD 命令列介面,輸入:convert ,並按回車,如果能看到一大堆的內容則表示安裝成功。

如果提示「 convert 不是內部或外部命令,也不是可執行的程式或批次檔」或者提示「請輸入轉換的碟符」( convert 是一個預設的將 FAT32 轉換到 NTFS 的系統命令)那麼你需要自己將 ImageMagick 的安裝路徑新增到系統路徑。

我的電腦 -> 單擊右鍵 -> 屬性 -> 高階 -> 環境變數 -> 系統變數 -> 找到「Path」 -> 選中並點選進行編輯 -> 把你的安裝路徑新增進去。

第二步、安裝imagick

點選這裡下載,注意下載的時候要下對應的 PHP 版本,同時注意系統是32位元還是64位元,以及 PHP 是 NTS 版還是 TS 版(目前最新穩定版是 3.1.2 ,關於如何判斷 PHP 是 NTS 版還是 TS 版,可通過 phpinfo 檢視其中的 Thread Safety 項,如果是 enabled 就代表是 TS 版,否之則就是 NTS 版)

將下載的壓縮包解壓,找到 php_imagick.dll 檔案,把它放到 PHP 的擴充套件目錄裡,然後開啟 php.ini 檔案,在對應的位置新增以下一行:

extension=php_imagick.dll

儲存退出後並重新啟動電腦,確保生效。

如果未生效,則將壓縮包裡所有「CORE_RL_*.dll」檔案複製到 php 根目錄,如:D:php5.6

第三步、檢查

如果一切正常,重新啟動後在 phpinfo 裡應該能看到 imagick 項,如:

如果找不到,則返回第一步,更換不同版本的 ImageMagick 重新安裝並重新偵錯。

第四步、測試

OK,到這一步可以開始編寫程式碼了,過程就不細說了,直接上程式碼

error_reporting(E_ERROR | E_WARNING);
 
$im = new Imagick('1.psd');
$im->setImageIndex(0);
$im->setIteratorIndex(0);
$im->stripImage(); //去除圖片資訊
$im->setImageCompressionQuality(80); //圖片品質
$im->writeImage('1.jpg');

以上程式碼已經經過測試可以正確生成出一張 1.jpg 的圖片。

建議縮圖還是以 jpg 格式,因為 png 格式不支援壓縮,我在測試的時候使用 30M 的 PSD 檔案,生成出來的 png 縮圖有 3M 多,而 jpg 只有 200KB 左右,並且生成 png 圖片的速度明顯很慢,大概需要3,4秒。

另外還做了極端測試,用了一近 600M 的 PSD 檔案生成 jpg 縮圖,速度基本在2秒內,檔案大小不到 2.5M ,由於並未對圖片進行尺寸的修改,所以最終生成檔案的體積可以根據實際情況再減小。

第五步、其它格式

除了 PSD 檔案,我還另外嘗試了一些其它格式,比如 MP4 、AVI 等視訊格式,但生成速度超級慢。最後發現比較實用的就是生成 PDF 檔案的縮圖,但處理 PDF 檔案前,需要安裝 Ghostscript ,然後整體的程式碼基本和生成 PSD 的程式碼一樣

$im = new Imagick();
$im->readImage('D:/soft/wamp/www/test/1.pdf[0]');
//echo $im->getNumberImages();
$im->writeImages('D:/soft/wamp/www/test/1.jpg', false);

以上就是如何通過imagick讓PHP生成PSD檔案縮圖(範例)的詳細內容,更多請關注TW511.COM其它相關文章!