PHP合并透明图背景为黑色时候的处理
2022/7/29 1:22:52
本文主要是介绍PHP合并透明图背景为黑色时候的处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
情况这样,左边的图片是使用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); 这段代码替换成 imagecopy($imagebox, $desImage, 20, 0, 0, 0, imagesx($desImage), imagesy($desImage));
第二种方式
如果需要使用 imagecopymerge 合并 ,还是把那段代码替换成如下代码,测试能够正常工作
$x = imagesx($desImage);$y = imagesy($desImage);$newDes = imagecreatetruecolor($x, $y);$color = imagecolorallocate($newDes,255,255,255); imagecolortransparent($newDes,$color); imagefill($newDes,0,0,$color); imagecopy($newDes, $desImage, 0, 0, 0, 0,$x, $y);imagecopymerge($imagebox, $newDes, 20, 0, 0, 0, $x, $y, 100);
一顿操作之后
这篇关于PHP合并透明图背景为黑色时候的处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享
- 2024-11-01开源 PHP 商城项目 CRMEB 安装和使用教程
- 2024-11-01用php和mysql写无限分类,有哪几种方法-icode9专业技术文章分享
- 2024-10-31php数据分表导出时部分数据无法导出什么原因-icode9专业技术文章分享
- 2024-10-30有经验的 PHP 开发者学习一门新的编程语言,有哪些推荐的有前景的语言-icode9专业技术文章分享
- 2024-10-21php 检测图片是否篡改过-icode9专业技术文章分享
- 2024-10-20fruitcake/php-cors 该怎么使用-icode9专业技术文章分享
- 2024-10-18PHP7.1可以使用哪个版本的swoole-icode9专业技术文章分享