PHP两张图片合成一张并添加文字设置背景透明

图片处理相关文档:https://www.php.net/manual/zh/ref.image.php
字体下载网站:http://font.chinaz.com/

代码实例

<?php
//图片一(一般在项目中最好用本地图片路径,这里为了演示方便使用在线图片)
$filename_1 = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png';
//图片二
$filename_2 = 'http://tb1.bdstatic.com/tb/static-client/img/webpage/wap_code.png';
//创建图片对象(如果是 jpg jpeg 用 imagecreatefromjpeg 即可)
$image_1 = imagecreatefrompng($filename_1);
$image_2 = imagecreatefrompng($filename_2);
//两张图片合成一张(根据需要自行调整数字参数)
imagecopymerge($image_1, $image_2, 0, 0, 0, 0, imagesx($image_2), imagesy($image_2), 100);
//输出合成图片
var_dump(imagepng($image_1,'./merge.png'));

//创建图像用于放文字
$image_text = @imagecreatetruecolor(450, 50) or die('Cannot Initialize new GD image stream');
//给图像分配颜色
$white = imagecolorallocate($image_text, 255, 255, 255);
//填充颜色
imagefill($image_text, 0, 0, $white);
//分配颜色和透明度(不需要设置透明度的话用 imagecolorallocate 亦可)
$color = imagecolorallocatealpha($image_text,255, 0, 0, 100);
//需要填充的文字
$text = '百度一下,很甜很甜';
//字体
$font = "C:/Users/admin/Desktop/sweet.ttf";
//向图像写入文本
imagettftext($image_text,30,0,10,40,$color,$font,$text);
//输出文字图片
var_dump(imagepng($image_text,'./text.png'));

//将 image_text.png 与 merge.png 合成一张
imagecopymerge($image_1, $image_text, 20, 200, 0, 0, imagesx($image_text), imagesy($image_text), 100);
//输出合成图片
var_dump(imagepng($image_1,'./merge_text.png'));

//图片设置透明(其实就是把指定颜色设置为透明色)
//给图像分配白色
$white = imagecolorallocate($image_1, 255, 255, 255);
//将 merge_text 图像中的白色设置为透明
imagecolortransparent($image_1, $white);
//输出图片
var_dump(imagepng($image_1,'./merge_text_transparency.png'));

图片样例

原图
filename_1

filename_2
图片结果
merge.png

text.png

merge_text.png

merge_text_transparency.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容