2010-06-19 56 views
5

即時通訊在網站上進行圖像上傳,並將圖像更改爲適合100 x 100白色方塊的縮略圖。問題是這些圖像看起來像他們不正確的反別名。圖像大小在photoshop中看起來很平滑,但這些看起來很脆,就像超級銳利。php imagejpeg質量很臭:爲什麼?

看看these samples,左側顯示全尺寸,右側顯示縮略圖(100%查看)。這張照片出來看起來很荒唐,但很多人可能不會爲此感到困擾。雖然繪圖是waaay不能接受的。那些彎曲的線條根本就不會有反鋸齒,並且變成虛線。

即時通訊使用imagejpg(),和我選擇的jpg質量對鬆脆沒有影響。繼承人一些圍繞它的代碼:

$tmp_img = imagecreatetruecolor($maxSize, $maxSize); 
$white = ImageColorAllocate ($tmp_img, 255, 255, 255); 
ImageFill($tmp_img, 0, 0, $white); 
imagecopyresized($tmp_img, $img, $offsetx, $offsety, 0, 0, $new_width, $new_height, $width, $height); 
$thumbFullPath = "{$pathToThumbs}/{$filenameNoExtension}.jpg"; 
imagejpeg($tmp_img, $thumbFullPath, 90); 

有什麼想法嗎?這是正常的嗎?謝謝!

回答

15

你可能想嘗試imagecopyresampled而不是imagecopyresized。它速度較慢,但​​使用更復雜的算法來確定新圖像中每個像素的顏色。

6

改變最後一行:

imagejpeg($tmp_img, $thumbFullPath, 100);

見:http://us4.php.net/manual/en/function.imagejpeg.php

另外,嘗試使用imagecopyresampled(),而不是imagecopyresized()

見:http://us4.php.net/manual/en/function.imagecopyresampled.php

+1

90和100之間沒有什麼區別。另外,我認爲比保存操作更多的縮放操作會浪費結果。 OP還表示,改變質量並不會增強任何事情。 – zneak 2010-06-19 18:32:19

+0

對,但它可能有幫助...... 10%...'imagecopyresampled()'在過去爲我創造了奇蹟。 – jordanstephens 2010-06-19 18:34:33

+1

同意「,請嘗試使用imagecopyresampled()而不是imagecopyresized()」 – 2010-06-19 18:35:22