2012-01-10 98 views
2

我有兩個gif圖像,一個帶有灰色漸變背景,另一個帶有徽標圖像。例如,在下面的圖片中,綠色框是標誌。PHP GD庫將合併圖像從綠色變爲橙色

我的問題是,當我合併使用PHP GD庫的兩個gif文件,綠色一些如何變成橙色/棕色,不會返回原來的顏色。請有人指出我做錯了什麼?

$base_image = 'img_in.gif'; 
    $logo_image = 'logo.gif'; 

    // Create images from files 
    $source = imagecreatefromgif($base_image); 
    $logo = imagecreatefromgif($logo_image); 

    //---------------------Logo-----------------------------------\\ 
    imagecolortransparent($logo, imagecolorallocate($logo, 0, 0, 0)); 
    imagecopymerge($source, $logo, 152, 33, 0, 0, 153, 26, 100); 

    // -------------------------------Output--------------------------\\ 
    imagegif($source,$image_out); 
    imagedestroy($source); 

綠色之一是它應該如何看 橙色的一個是如何結束了尋找 This is how it should look

This is how it ends up looking

以上是它應該如何看 以上是如何結束up looking

+0

我懷疑問題在於GIF格式有限的調色板,但不能給你一個解決方案。雖然如果沒關係,將輸出切換到PNG可能會解決您的問題。 – Maerlyn 2012-01-10 23:31:04

回答

2

由於GIF是基於托盤的,每個GIF can use 256 colors o只有 - 在調色板中分配的那些。 如果您將一個GIF複製到另一個GIF中,庫需要以某種方式均勻調色板。

我建議將這些GIF轉換爲PNG(或更多顏色的某種格式),進行處理並最終轉換回GIF。

一般而言,結果應該看起來更好。

+0

嗨,感謝您的回覆。我確實使用它作爲PNG,但是,質量非常差,在完成的圖像中有很多噪音。 :( – user1038814 2012-01-10 23:36:28

0

感謝您的回覆傢伙。我意識到我只用63種顏色而不是256種保存gif!衛生署!無論如何,謝謝