2013-05-31 20 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這樣的無損圖像格式。