PHP - 使用imagecopy时颜色不正确

时间:2013-08-23 19:47:28

标签: php gd

我有几个生成的png图像:

$img = imagecreatefrompng($full_path_to_file);
imagealphablending($img , true); // setting alpha blending on
imagesavealpha($img , true); // save alphablending setting

图像精美,颜色正确,背景透明。

我需要将这些图像合二为一。为此我做了以下事情:

  1. 创建具有正确尺寸的空白图像

    $full_image = imagecreate($full_width, $full_height);

  2. 将png图像逐个复制到空白图像

    imagecopy($full_image, $src, $dest_x, $dest_y, 0, 0, $src_width, $src_height

  3. 图像组合好了。背景是透明的,但颜色不正确。

    如何确保获得正确的颜色?

    更新:根据建议,修复是使用imagecreatetruecolor此外,我需要将第二个参数设置为imagealphablending为false。因此,在创建png图像并创建full_image时,我会调用

    imagealphablending($img , false); // updated to FALSE
    imagesavealpha($img , true); 
    

    imagesavealpha says的文档:

      

    你必须取消设置alphablending(imagealphablending($ im,false))   用它。

2 个答案:

答案 0 :(得分:2)

尝试使用:imagecreatetruecolor代替imagecreate。

答案 1 :(得分:0)

只需要在imagecopy()方法之后添加以下代码

$ white = imagecolorallocate($ destination_image,255,255,255); imagefill($ destination_image,0,0,$白色);