2012-01-10 54 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!卫生署!无论如何,谢谢