2012-01-10 12 views
2

私は2つのgif画像を持っています.1つは灰色のグラデーションの背景、もう1つはロゴ付きです。たとえば、下の画像では、緑色のボックスがロゴです。PHP GDライブラリは、マージされた画像を緑色から橙色に変えます。

私の問題は、PHP GDライブラリを使用して2つの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); 

緑の一つは、それが オレンジ1は、それが上記 This is how it should look

This is how it ends up looking

を探して終わる方法ですどのように見えるべきかであることが上記 をどのように見えるべきかである、それが終了する方法です上向きに見える

+0

問題はgif形式の限られたカラーパレットにあると思われますが、解決策を与えることはできません。それは大丈夫ですが、出力をpngに切り替えるとおそらく問題が解決します。 – Maerlyn

答えて

2

GIFはパレットベースですので、それぞれGIF can use 256 colors nly - パレットに割り当てられたもの。 あるGIFを別のGIFにコピーする場合、ライブラリはどうにかしてパレットを均質化する必要があります。

私はPNG(色以上のいくつかの形式)にそれらのGIFを変換するに提案したい、処理を行い、最終的に戻ってGIFに変換します。

一般的に、結果はよりよく見えるはずです。

+0

こんにちは、返信いただきありがとうございます。私はpngとして使用しましたが、品質は非常に悪く、完成した画像には多くのノイズがありました。 :( – user1038814

0

返信いただきありがとうございます。私はgifを256色でなく63色だけで保存していることに気付きました!ドー!とにかくありがとう

関連する問題