2

我有两张 gif 图像,一张带有灰色渐变背景,一张带有徽标。例如,在下图中,绿色框是徽标。

我的问题是,当我使用 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);

绿色的是它应该的样子 橙色的是它最终的样子 这是它应该看起来的样子

这就是它最终的样子

以上是它的外观 上面是它最终的外观

4

2 回答 2

2

由于 GIF 是基于托盘的,因此每个GIF 只能使用 256 种颜色- 那些在其调色板中分配的颜色。如果您将一个 GIF 复制到另一个 GIF 中,则库需要以某种方式使调色板同质化。

我建议将这些 GIF 转换为 PNG(或具有更多颜色的某种格式),进行处理并最终转换回 GIF。

一般来说,结果应该看起来更好。

于 2012-01-10T23:29:37.187 回答
0

谢谢大家的回复。我意识到我保存的 gif 只有 63 种颜色而不是 256 种颜色!嗬!不管怎么说,还是要谢谢你

于 2012-01-11T13:54:21.267 回答