2

2つのgif画像があります。1つは灰色のグラデーションの背景で、もう1つはロゴのある画像です。たとえば、下の画像では、緑色のボックスがロゴです。

私の問題は、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);

緑のものはそれがどのように見えるべきかですオレンジ色のものはそれがどのように見えるかです これはそれがどのように見えるべきかです

これはそれがどのように見えるかです

上記はそれがどのように見えるべきか上記はそれがどのように見えるかです

4

2 に答える 2

2

GIF はパレット ベースであるため、各GIF は 256 色(パレットに割り当てられている色) のみを使用できます。1 つの GIF を別の GIF にコピーする場合、ライブラリは何らかの形でパレットを均質化する必要があります。

これらの GIF を PNG (またはより多くの色を含む形式) に変換し、処理を行い、最終的に GIF に戻すことを提案します。

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

于 2012-01-10T23:29:37.187 に答える
0

返信してくれてありがとう。256色ではなく63色でgifを保存していることに気づきました。ドー!とにかくありがとう

于 2012-01-11T13:54:21.267 に答える