2010-09-01 69 views
6

我不喜歡調整後的圖像我出去,PHP GD:調整大小質量不好?

imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

ImageJpeg ($resized_img,"$path_thumbs/$rand_name.$file_ext", 100); 

我ImageJpeg加100,因爲我希望提高質量,但它沒有得到任何好轉。

我怎樣才能提高使用imagecopyresampled嘗試,而不是對縮放後的圖像/縮略圖

回答

25

嘗試使用imagecopyresampled來代替。這是插值,這將使事情看起來好多了。

+3

創建$ new_img時請確保使用imagecreatetruecolor() – JochenJung 2010-09-01 11:03:25

+1

如果您閱讀PHP手冊,我很確定它提到使用上述兩個函數是強烈推薦的。 – Christian 2010-09-01 12:54:31

+0

太棒了!工作完美,謝謝! – 2013-08-21 15:08:30

0

我使用timthumb爲此。只是給另一種選擇;)

+0

鏈接沒有工作。 – 2016-01-04 05:57:03

+0

關於TimThumb的信息:https://www.binarymoon.co.uk/2014/09/timthumb-end-life/ – 2016-01-04 06:02:26

7

自PHP 5.5,你可以使用imagesetinterpolation,以確定您的圖片轉換(通常,縮放和重採樣期間插值的方式,但也旋轉,等)。

http://php.net/manual/en/function.imagesetinterpolation.php

對於圖像下采樣,你可能想使用IMG_SINC算法,這會給人更清晰的效果。對於旋轉也是如此。

對於上採樣,IMG_BICUBIC_FIXED,IMG_GENERALIZED_CUBIC和IMG_QUADRATIC可能會給出更好的結果。最終,您必須測試它們:儘快在新創建的圖像資源上設置此選項,並在保存jpeg時將其與高質量標誌結合使用,並且在使用GD時應該完全沒有工件。

+0

對於過去的版本如PHP 5.3有沒有其他的選擇? – 58YtQ2H83m17838963l61BU07Y8622 2017-02-04 19:26:49

+1

imagecopyresampled,請參閱http://php.net/manual/en/function.imagecopyresampled.php – Argo 2017-02-06 10:33:45