【问题标题】:php imagejpeg quality stinks: why?php imagejpeg 质量很糟糕:为什么?
【发布时间】:2010-06-19 18:28:15
【问题描述】:

我在网站上上传图像并将图像更改为适合 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 );

有什么想法吗?这是正常的吗?谢谢!

【问题讨论】:

    标签: php image-processing antialiasing


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      将最后一行改为:

      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

      【讨论】:

      • 90 和 100 不会有太大区别。另外,我认为浪费结果的更多的是缩放操作而不是保存操作。另外,OP 说改变质量并不能增强任何东西。
      • 对,但它可能会有所帮助...10%...imagecopyresampled() 过去曾为我创造了奇迹。
      • 同意,“尝试使用 imagecopyresampled() 而不是 imagecopyresized()”
      • @OP 如果这不能解决,请显示一些示例图像。
      • 我稍后会尝试一下,当我拍下当前燃烧我桌子的火焰时。非常感谢 - imagecopyresampled() 听起来很有希望!
      【解决方案3】:
      $imagepath = /path/to/image.jpg; 
      $image = imagecreatefromjpeg($imagepath); 
      header('Content-Type: image/jpeg'); 
      imagejpeg($image, NULL, 100); 
      

      最后一行很重要!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多