如何从透明图像混合颜色创建图像?

发布于 2024-08-16 22:12:45 字数 655 浏览 2 评论 0原文

我正在构建一种系统,它可以简单地从其他图像创建动态图像。我使用: imagecreatefromstring(file_get_contents("clown_avatar.png")); 创建图像并成功输出;但是,它弄乱了透明区域上的所有颜色。

查看原始图像:

点击

并且,这是 PHP 文件的结果:

Click

这是源代码,只有几行:

<?php

$im = imagecreatefromstring(file_get_contents("clown_avatar.png"));
//$bg = imagecolorallocate($im,0,0,0); doesn't effect
Header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>

我尝试使用 imagecolorallocate 添加背景颜色;但是,根本没有效果。

I am building one kind of system, which simply creates dynamic image from other image. I use: imagecreatefromstring(file_get_contents("clown_avatar.png")); to create image and output it successfully; but, it messes all the colors on the transparent area.

Check out the original image:

Click

And, here is the result from PHP file:

Click

Here is the source, just few rows:

<?php

$im = imagecreatefromstring(file_get_contents("clown_avatar.png"));
//$bg = imagecolorallocate($im,0,0,0); doesn't effect
Header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>

I tried to add background color with imagecolorallocate; but, it did not effect at all.

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

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

发布评论

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

评论(1

罪歌 2024-08-23 22:12:45

这样做的原因是您要丢弃 alpha 层。通过这样做,图像中原本不可见的部分现在变得可见。

相反,您想要做的是加载带有 alpha 的原始 PNG 图像,然后使用 imagecopymerged

The reason for this is that you are discarding the alpha layer. By doing so, the otherwise invisible parts of the image now become visible.

What you instead want to do, is load the original PNG image with alpha, and copy it onto a desired image (that is solely the background color) using imagecopymerged.

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