2013-04-23 48 views
0

我努力學習的ImageMagick,php.net文檔是可怕的T_T,我似乎無法找到我的問題的任何答案。我想讓人們上傳圖片,然後調整它們的大小並丟失EXIF數據。ImageMagick的調整控制質量和延長

繼承人,我目前有什麼。

$thumbnail = new Imagick("http://4.bp.blogspot.com/-hsypkqxCH6g/UGHEHIH43sI/AAAAAAAADGE/0JBu9izewQs/s1600/luna-llena1.jpg"); 
$thumbnail->thumbnailImage(100, 100, true); 
$thumbnail->writeImage("avatar/thumbnail.jpg"); 

現在我該如何控制它被保存的圖像文件?假設用戶提交了一個gif/png/jpg文件,我該如何處理這個圖像,然後將其保存爲相同的輸入格式或將它們全部更改爲.png?

回答

0

我同意,在PHP.net文檔是不是非常有幫助。我發現找到如何使用命令來完成任務是最簡單的,然後將命令與PHP方法進行匹配。我有點遲到,所以你現在可能已經想通了,但如果沒有,或爲了其他人的利益:

如果你想在保存之前改變圖像格式,請在你的writeImage行之前添加:

$thumbnail->setImageFormat('png'); 

然後在您的writeImage行中更改擴展名以匹配,例如thumbnail.png

要更改質量,寫:

$thumbnail->setImageCompressionQuality(40); // Adjust the number 40 

在某些情況下,你可能也想通過寫作來設置壓縮類型:

你可以在這裏找到壓縮常量:http://www.php.net/manual/en/imagick.constants.php

注意:這些僅僅是示例。這種壓縮方式實際上並不適用於png文件。

1

此IMO爲imagick縮略圖產生最佳效果;

加載圖片

$img = new imagick($_FILES['Picture']['tmp_name']); 

修剪多餘關閉圖片

$img->trimImage(0); 

創建縮略圖,在這種情況下,我使用 'cropThumbnailImage'

$img->cropThumbnailImage(180, 180); 

套裝格式,所以所有的照片現在可以是相同的標準格式

$img->setImageFormat('jpeg'); 

設置圖像壓縮到一個jpg

$img->setImageCompression(Imagick::COMPRESSION_JPEG); 

設置質量爲100

$img->setImageCompressionQuality(100); 

所得縮略圖然後一點點blury IMO,所以加輕微的銳化效果使其「更銳利」。 。玩弄這些設置,但我喜歡..

$img->unsharpMaskImage(0.5 , 1 , 1 , 0.05);