2016-02-26 62 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个 - 这仍然是一个高压缩值,而质量不会受到太多影响,否则应该将其设置得更高。如果您对图片质量有特殊要求,则可能需要测试一些值。

相关问题