我有几个像这样生成的 png 图像:
$img = imagecreatefrompng($full_path_to_file);
imagealphablending($img , true); // setting alpha blending on
imagesavealpha($img , true); // save alphablending setting
图像很好,颜色正确,背景透明。
我需要将这些图像合二为一。为此,我执行以下操作:
创建具有正确尺寸的空白图像
$full_image = imagecreate($full_width, $full_height);
将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)) 才能使用它。