PHP GD图像库改变图像颜色 - gif工作,但jpegs不会

时间:2013-05-31 15:44:45

标签: php image-processing gd

感谢您抽出宝贵时间阅读我的问题:

我正在使用以下代码来获取图像,然后更改颜色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张图片)

问题是当我尝试todo完全相同但使用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);

如果有人能帮助我解决这个问题,我将不胜感激。在此先感谢所有。

1 个答案:

答案 0 :(得分:1)

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

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