php处理过的png图合并时透明背景变成黑色解决方法

本文介绍了在PHP处理中,合并PNG图片时透明背景变为黑色的问题及其解决方案。通过调整imagecopy和imagecopymerge函数的使用方式,成功避免了透明区域变黑的现象,确保了图片透明度的正确保留。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况这样,左边的图片是使用php磨圆后的图片,然后与白色背景的图片合并之后,透明部分奇怪的变成了黑色。

最初的代码,简单的合并

//背景图片
$bgPath= './resource/bg.png';
$bgImage= imagecreatefrompng($bgPath);

//透明图片
$desPath = './resource/avator.png';
$desImage = imagecreatefrompng($desPath);

//创建图像
$imagebox = imagecreatetruecolor(imagesx($bgImage),imagesy($bgImage));
imagecopyresampled($imagebox, $bgImage, 0, 0, 0, 0, imagesx($bgImage), imagesy($bgImage), imagesx($bgImage), imagesy($bgImage));

//----合并透明图片----
imagecopymerge($imagebox, $desImage, 20, 0, 0, 0, imagesx($desImage), imagesy($desImage), 100);  

$filename = './images/'.uniqid().'.jpg';
imagejpeg($imagebox,$filename);
imagedestroy($imagebox);

第一种方式

使用 imagecopy 合并

这里既是直接把 imagecopymerge($imagebox, $desImage, 20, 0, 0, 0, imagesx($desImage), imagesy($desImage), 100);  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值