2016-02-26 64 views
0

我試圖在上傳後調整圖像大小,但圖像質量受損。調整大小後的圖像質量不好

我已經測試了兩個2套代碼:

$im = new imagick($filename); 
$im->setImageResolution(1250,1250); 
$im->setImageColorspace(255); 
$im->setCompression(Imagick::COMPRESSION_JPEG); 
$im->setCompressionQuality(100); 
$im->setImageFormat('jpeg'); 
$im->writeImage('thumb.jpg'); 
$im->clear(); 
$im->destroy(); 

這:

$newwidth = 460; 
$newheight = 275; 
$newwidth1 = 146; 
$newheight2 = 88; 

list($width, $height) = getimagesize($path); 
$src = imagecreatefromjpeg($path); 
imagecopyresampled($temp, $src, 0,0,0,0, $newwidth, $newheight, $width, $height); 
Imagettftext($temp, 16, 0, $start_x, $start_y, $black2, $font , "text"); 
imagejpeg($temp, $path,75); 
imagedestroy($temp); 

$temp2 = imagecreatetruecolor($newwidth1, $newheight2); 
imagecopyresampled($temp2, $src, 0,0,0,0, $newwidth1, $newheight2, $width, $height); 
Imagettftext($temp2, 8, 0, $start_x2, $start_y2, $black2, $font , "text"); 
imagejpeg($temp2,$pathFile ,75); 
imagedestroy($temp2); 
imagedestroy($src); 

他們都不是工作,我想。有什麼建議?

+0

當然,重新調整大小的質量並不高。你期望什麼? – frosty

+2

他們'質量不好'?你可以發佈樣本嗎? imagick有'imagick :: COMPRESSION_LOSSLESSJPEG' – Gavin

回答

0

對於ImageMagick的和setCompressionQuality(),根據PHP文檔:

這種方法僅適用於新的圖像例如那些通過Imagick :: newPseudoImage創建的。對於現有的圖像,你應該使用Imagick :: setImageCompressionQuality()。

所以setImageCompressionQuality應該做的伎倆。

對於你的GD例子:GD實際上75是相當低的。合理的價值在很大程度上取決於所使用的庫,並且我建議GD至少有85個 - 這仍然是一個高壓縮值,而質量不會受到太多影響,否則應該將其設置得更高。如果您對圖片質量有特殊要求,則可能需要測試一些值。

相關問題