如何将带有 Alpha 通道的 PNGS 合并为一张更大的图像?

发布于 2024-10-07 16:47:12 字数 1424 浏览 4 评论 0 原文

我正在尝试对这些进行分层:

gametile_masked_file gamertile_masked_file sanctum-background.png

进入此:

但我不断得到的是:

alt text

这是相关代码,我不是确定我缺少什么:

    $sig_background = imagecreatefrompng("sanctum-signature.png");
imagealphablending($sig_background, false);
imagesavealpha($sig_background, true);
$sig_gamertile = imagecreatefrompng($gamertile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
$sig_gametile = imagecreatefrompng($gametile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
imagecopymerge($sig_background, $sig_gamertile, 175, 2, 0, 0, 64, 64, 100);
imagecopymerge($sig_background, $sig_gametile, 342, 20, 0, 0, 64, 64, 100);

如果缺少更多信息,请告诉我,我会尽力填补空白。感谢您抽出时间。

编辑 - 这里是文件的链接(托管在 photobucket 上) 游戏块 游戏图

I am trying to layer these:

gametile_masked_file
gamertile_masked_file
sanctum-background.png

into this:

alt text

But what I keep getting is this:

alt text

This is the relevant code, Im not sure what Im missing:

    $sig_background = imagecreatefrompng("sanctum-signature.png");
imagealphablending($sig_background, false);
imagesavealpha($sig_background, true);
$sig_gamertile = imagecreatefrompng($gamertile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
$sig_gametile = imagecreatefrompng($gametile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
imagecopymerge($sig_background, $sig_gamertile, 175, 2, 0, 0, 64, 64, 100);
imagecopymerge($sig_background, $sig_gametile, 342, 20, 0, 0, 64, 64, 100);

If any more information is missing, please let me know and Ill try to fill in the blanks. Thank you for your time.

edit - here are links to the files (hosted on photobucket)
gamertile
gametile

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暖树树初阳… 2024-10-14 16:47:12

您的代码中有一个拼写错误,是复制/粘贴错误还是真正的错误?

你这样做:

$sig_gamertile = imagecreatefrompng($gamertile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);

然后:

$sig_gametile = imagecreatefrompng($gametile_masked_file);

但紧接着,你继续调用 $sig_gamertile 上的函数,而不是 $sig_gametile

imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);

显然,从根本上重命名一些变量将有助于防止这种情况。

There's a typo in your code, is it a copy/paste error or a real bug?

You do:

$sig_gamertile = imagecreatefrompng($gamertile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);

And then:

$sig_gametile = imagecreatefrompng($gametile_masked_file);

But straight afterwards, you continue to call functions on $sig_gamertile instead of $sig_gametile:

imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);

Obviously radically renaming some vars would help guard against this.

岁月蹉跎了容颜 2024-10-14 16:47:12

该行:

imagealphablending($im, false);

禁用 alpha 混合。使用true而不是false

The line:

imagealphablending($im, false);

disables alpha blending. Use true instead of false.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文