1、创建一个PHP示例文件。
2、创建一个和背景图片一样大小的真彩色画布。
3、复制背景图片。
4、通过“imagecreatefrompng”合成png图片即可。
实例:
<?php
ob_clean();
$bg="image1.png";
$image_1=imagecreatefrompng($bg);
$bgx=imagesx($image_1);
$bgy=imagesy($image_1);
//创建一个和背景图片一样大小的真彩色画布(ps:只有这样才能保证后面copy图片的时候不会失真)
$bgimage=imageCreatetruecolor($bgx,$bgy);
imagesavealpha($bgimage,true);//保持透明
imagealphablending($bgimage,true);//混色模式
$alpha=imagecolorallocatealpha($bgimage,0,0,0,127);//透明
imagefill($bgimage,0,0,$alpha);
//copy背景图片
imagecopyresampled($bgimage,$image_1,0,0,0,0,$bgx,$bgy,$bgx,$bgy);
$fontColor=imagecolorallocate($bgimage,0x33,0x33,0x33);
$image_2=imagecreatefrompng("image2.png");
//合成图片2
imagecopyresampled($bgimage,$image_2,100,100,0,0,40,40,imagesx($image_2),imagesy($image_2));
//文字
$textLen=mb_strlen($text1);
$fontSize=20;
$fontWidth=imagefontwidth($fontSize)*3;//不知为什么,实测如此
$textWidth=$fontWidth*mb_strlen($text1);
$textx=ceil(($bgx-$textWidth)/2);
imageTTFText($bgimage,$fontSize,0,$textx,450,$fontColor,$font,$text1);
$result=imagepng($bgimage,"newimage.png");
imagedestroy($bgimage);
imagedestroy($qrcode);
更多相关解决方法
PHP解决合并图片失真问题
$ni=imagecreatetruecolor($toW,$toH);//创建真彩色图片
$bg_x=(($toW-$ftoW)/2);
$bg_y=(($toH-$ftoH)/2);
$color=imagecolorallocate($ni,255,255,255);//创建颜色
imagefill($ni,0,0,$color);//设置白底
imagecopy($ni,$tm,$bg_x,$bg_y,0,0,$ftoW,$ftoH);//合并图片
imagedestroy($tm);
|