我知道PHP+GD透明度问题已经在这个和许多其他网站上被反复讨论,但我已经遵循了所有建议,但似乎无法解决我的问题。
首先,解释一下:
我试图将一张图片覆盖在另一张图片上。它们都有透明区域。作为一个我知道应该呈现特定方式的演示,我试图在我创建的蓝色箭头形状上覆盖一个勾选标记。
这是这两个图片:
我正在使用一个我构建的库/API,以减轻使用PHP+GD编辑图像时的一点点痛苦。它仍处于萌芽阶段,但相关文件包括: 基础类 主加载器 (命名不恰当的)合并类 我正在使用以下脚本运行代码:
<?php
require_once('Image.php');
header("Content-Type: image/png");
$img = new Image();
$over = new Image();
$img->source = "arrow.png";
$over->source = "chk-done_24.png";
$img->Combine->Overlay($over, 20, 20, 0, 0, $over->width, $over->height);
$img->output();
$img->clean();
unset($img);
?>
我期望的输出应该像这样:
在我上面链接的“Combine Class”中,我还尝试了imagecopy, imagecopyresampled和普通的imagecopymerge,结果都类似。
我完全不知所措。
编辑:
明确一下,我的问题是:我的代码哪部分有误?为什么它会用颜色填充透明区域(而不是黑色或白色),我如何修复它,同时仍然保持合并具有透明度的图像的能力?
更新:
请注意,当创建新的 Image 对象时,它调用 newImage,其中包含以下代码:
$this->handle = imagecreatetruecolor($this->width, $this->height);
imagealphablending($this->handle, false);
imagesavealpha($this->handle, true);
我觉得那可能很容易被忽略。