4

我有几个像这样生成的 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)

图像组合正常。背景是透明的,但颜色不正确。

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

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

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

imagesavealpha的文档说:

您必须取消设置 alphablending (imagealphablending($im, false)) 才能使用它。

4

2 回答 2

2

尝试使用:imagecreatetruecolor而不是 imagecreate。

于 2013-08-23T20:03:52.067 回答
0

只需在调用 imagecopy() 方法后添加以下代码

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

于 2016-03-14T14:06:31.060 回答