0

感谢您花时间阅读我的问题:

我正在使用以下代码获取图像,然后更改颜色 201,2,255 (r,g,b) - 这是一种紫色阴影,然后输出图像。

$imgname = "input.gif";
$im = imagecreatefromgif ($imgname);

$index = imagecolorclosest ( $im,  201,2,255 ); // get White COlor
imagecolorset($im,$index,60,140,48); // SET NEW COLOR

$imgname = "output.gif";
imagegif($im, $imgname ); // save image as gif
imagedestroy($im);

这很完美,可以在这里看到:http ://www.office-desks.co.uk/cache_images/test.php (前2张图片)

问题是当我尝试完全相同但使用 jpeg 时它不起作用..(底部 2 张图片)

$imgname = "input.jpg";
$im = imagecreatefromjpeg ($imgname);

$index = imagecolorclosest ( $im,  201,2,255 ); // get pink/purple COlor
imagecolorset($im,$index,60,140,48); // SET NEW DECENT COLOR

$imgname = "output.jpg";
imagejpeg($im, $imgname ); // save image as gif
imagedestroy($im);

如果有人可以帮助我解决这个问题,将不胜感激。提前谢谢大家。

4

1 回答 1

1

有点晚了,但我认为这与 JPG 生成的“伪影”(压缩错误)有关。放大 JPG,您会看到与邻居不匹配的像素“颗粒”。这意味着单一颜色的大平面将变成多种颜色,而不是 1 个单一值。

坚持使用无损图像格式,如 gif 或 png。

于 2014-01-31T12:36:01.137 回答