2011-03-12 72 views
17

resizeImagescaleImage之間有什麼區別?Imagick :: resizeImage vs Imagick :: scaleImage

我需要如果其大小> $ myLimit

實施例(僞碼),以調整圖像大小:

$myLimit = 1MB 
user uplaod an image of 1000x1000 of 2MB 
2MB > $myLimit 
while($imagefilesize > $myLimit ) { 
    resizeImageBy 0.9%; 
} 

//> output 900x900 image of 900 kB 

while塊,其中兩個方法應該使用?

編輯:我發現了一些可以幫助:http://www.imagemagick.org/Usage/resize/但是,有人可以簡化嗎?

+0

哦廢話。修復它的resizeImage與規模 – dynamic 2011-03-12 20:48:50

+0

你是什麼意思*大小*?寬度?高度? – ifaour 2011-03-12 20:53:48

+0

@if:是的........ – dynamic 2011-03-12 20:56:05

回答

21

兩者之間的區別似乎是scaleImage做原料,基於像素大小調整,而resizeImage可以使用an interpolation filter

imagick::INTERPOLATE_AVERAGE 
imagick::INTERPOLATE_BICUBIC 
imagick::INTERPOLATE_BILINEAR 
... 

很可能產生更好的效果。

更多關於Wikipedia的各種插值方法。

+0

@我不知道,我不知道這些過濾器的深度。我會嘗試每一個,並通過結果的質量來判斷 – 2011-03-12 21:07:40

+3

@ yes123:[Here](http://www.docstoc.com/docs/33154923/Filters-for-Common-Resampling-Tasks)你會發現一個文章說lanczos確實是一個不錯的選擇:)。剛剛閱讀langzos部分,它在那裏有結論!呃1990年的論文,可能已經過時了。然後想起它..既然你降低了分辨率,它並不需要那麼多。你甚至可以使用BOX濾鏡,只需測試幾張圖片即可。 – Yuri 2011-03-12 21:11:16

+0

@yes我不知道你在用縮放比例來解決什麼問題 - 文件大小或分辨率。我認爲你應該問一個新的問題,並解釋你的目標是什麼 – 2011-03-12 21:11:58

1

輝煌的,他們自己的文檔是可怕的...但確定:它看起來像我resizeImage更強大,因此更好的選擇... This link顯示用法以及一些測量不同的過濾器。

+0

ye ..這裏的文件缺乏..可能是因爲GD是「內置的」,每個人都使用它(甚至是他們sux) – dynamic 2011-03-12 21:09:23

0

根據我的發現,當你想縮小圖像,使用resizeImage。因爲它可以讓您控制圖像質量和要使用的濾鏡類型。但是在同樣的情況下,scaleImage也是一個不錯的選擇,因爲當你不得不縮小圖像的比例,並且使用resizeImage時,你的結果圖像會有很多圖形錯誤。

在第二種情況下,當您不得不放大圖像時,resizeImage將會像標記和線條等其他東西一樣定義出圖形錯誤。在這種情況下,scaleImage將開始救援。