发布于2024-11-26 12:27 阅读(1034) 评论(0) 点赞(7) 收藏(0)
我正在尝试从 GD 中的动态文本数据创建图像,并在顶角放置徽标。图像的背景颜色将根据传入的数据而变化,因此我不能将徽标保存为没有 alpha 通道的图像。
我创建了图像,使用 imagefill() 用动态背景颜色填充它,然后使用 imagettftext() 添加文本,然后加载我的徽标。我无法将徽标放入图像中,而无法保持其“透明”背景颜色。因此,我希望它后面有使用 imagefill() 设置的动态背景颜色。但是,它保留了加载时的透明背景,因此将 png 的这一部分写为透明。我尝试在徽标加载后调用 imagefill()(使用与设置目标图像背景相同的 rgb),但这没有任何作用。
下面是我的代码:
$background = $_GET['background'];
$data1 = $_GET['data1'];
$data2 = $_GET['data2'];
$r = $_GET['r'];
$g = $_GET['g'];
$b = $_GET['b'];
$png_image = imagecreate(400, 200);
$gd_text_color = imagecolorallocate($png_image, 255, 255, 255);
$gd_background_color = imagecolorallocate($png_image, $r, $g, $b);
imagefill($png_image, 0, 0, $gd_background);
$text1 = "test test $data1";
$text2 = "test test again $data2";
$font = 'Lato-regular.ttf';
imagettftext($png_image, 18, 0, 20, 20, $gd_text_color, $font, $text1);
imagettftext($png_image, 18, 0, 20, 50, $gd_text_color, $font, $text2);
//trying to get this logo and place it in the corner.
$logo = imagecreatefrompng("images/logo.png");
imagecopy($png_image, $logo, 10, 10, 0, 0, 100, 30);
header('Content-type: image/png');
imagepng($png_image, $filename);
imagedestroy($png_image);
这是该代码的输出:https://i.sstatic.net/LvDZF.png这是将图像加载到接受 alpha 通道的程序中时的样子:https://i.sstatic.net/2SbLP.png
有人知道我将如何实现我的尝试吗?
感谢您的时间。
编辑
为了解释我想要什么,这里是另一张图片。上面的图片是我目前得到的,下面的图片是我想要的。我只是想加载一个透明的 PNG,它可以放在不同颜色的背景上。然而,我要么得到它像这里显示的那样(透明背景),要么得到黑色背景(因为我猜 alpha 通道没有被查看?)。希望这有帮助。图片:
编辑2
根据下面的评论,我将其从 imagecreate() 更改为 imagecreatetruecolor(),现在它工作正常!如果有人有时间,我很想解释一下为什么这可以解决这个问题,但现在,感谢所有发表评论或花时间研究这个问题的人。
我怀疑您imagecreate()
可能会遇到问题,因为它创建的调色板图像不具备真彩色图像的灵活性或表达广度。
我建议您将其替换为imagecreatetruecolor()
。
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/554912/d9c5e0e4e50e69f9b0f3/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!