2

使用此代码后(只是处理图像的部分)

$image = imagecreatefromjpeg($filename);
$new_width = $thumbnail_width;
$new_height = $thumbnail_height;
$start_width = 0;
$start_height = 0;
$start_width = ($thumbnail_width - $image_params[0]) / 2;
$start_height = ($thumbnail_height - $image_params[1]) / 2;
imagecopy($image_res, $image, $start_width, $start_height, 0, 0, $image_params[0], $image_params[1]);

我得到了非常非常差的像素化结果,你可以在这里看到 在此处输入图像描述

这是原始图像

在此处输入图像描述

PHP 版本 5.3.18

GD 版本捆绑(2.0.34 兼容)

使用GD对我来说是必须的。这个例子在许多服务器上运行得很好,但在一些服务器上我得到了这个可怕的结果,我想知道原因。

请问有什么帮助吗?

4

2 回答 2

6

指定质量百分比时,我已经解决了同样的问题。

imagejpeg($im, 'watemark.jpg', 100);

或 75 为更低等。

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

于 2013-09-19T01:34:24.423 回答
1

您需要在 imagejpeg() 中指定质量百分比。此外,您可以使用 imagecopyresampled() 代替 imagecopy()。

imagecopyresampled($new_image,$old_image,0,0,0,0,$new_width,$new_height,$image_width,$image_height);
imagejpeg($new_image,$image,100);
于 2018-02-14T07:33:38.900 回答