2013-05-31 18 views
0

感谢您抽出时间来阅读我的问题:PHP GD图片库改变图像色彩 - GIF作品,但JPEG文件惯于

我用下面的代码获取图像,然后更改颜色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); 

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

+0

您可以在替换颜色之前将[imagetruecolortopalette](http://php.net/manual/en/function.imagetruecolortopalette.php)应用于资源吗? –

+0

谢谢安东尼,你有没有这方面的例子?我如何实现上面的代码? –

回答

1

有点晚了,但我认为这与JPG产生的“文物”(压缩错误)有关。放大一张JPG,你会看到与邻居不相符的像素“颗粒”。这意味着单一颜色的大平面会变成多种颜色而不是单一的值。

坚持使用像gif或png这样的无损图像格式。