php imagejpeg质量臭:为什么?

时间:2010-06-19 18:28:15

标签: php image-processing antialiasing

我在网站上上传图片并将图片更改为适合100 x 100白色方块的缩略图。问题是图像看起来好像没有正确的反锯齿。在photoshop中缩小尺寸的图像看起来很光滑,但这些看起来很脆,就像超级锐化一样。

查看these samples,左侧显示完整尺寸,右侧显示缩略图(100%视图)。这张照片看起来很荒谬可笑,但很多人可能不会被它打扰。虽然图纸是不可接受的。那些曲线根本就没有反锯齿,变成了虚线。

即时通讯使用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 );

任何想法?这是正常的吗?谢谢!

3 个答案:

答案 0 :(得分:15)

您可以尝试使用imagecopyresampled代替imagecopyresized。它速度较慢,但​​使用更复杂的算法来确定新图像中每个像素的颜色。

答案 1 :(得分: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

答案 2 :(得分:0)

$imagepath = /path/to/image.jpg; 
$image = imagecreatefromjpeg($imagepath); 
header('Content-Type: image/jpeg'); 
imagejpeg($image, NULL, 100); 

最后一行很重要!