php合成海报

//参数1 是因为需要微信用户头像,所以穿了对象过去

//参数2 文件存储地址

//参数3 二维码图片地址

function img2img_hb($wxUserInfo,$imgdir,$qrurl){
global $cssurl;//全局静态文件地址
$bigImg = imagecreatefromstring(file_get_contents($cssurl.'/hb/mb/muban.png'));
$font = $cssurl.'/hb/font/msyh.ttc';

$black = imagecolorallocate($bigImg, 102, 102, 102);

imagefttext($bigImg, 16, 0, 164, 900, $black, $font, $wxUserInfo->nickname);//用户名
$url = $wxUserInfo->headimgurl;//生成圆角

$txImg = radius_img($url,0);

$tx_width = imagesx($txImg);
$tx_height = imagesy($txImg);
imagecopyresized($bigImg, $txImg, 29, 826, 0, 0, 112,112,$tx_width,$tx_height);

 

$curl = curl_init($qrurl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$qrdata = curl_exec($curl);
curl_close($curl);

$qCodeImg = imagecreatefromstring($qrdata);
imagecopyresized($bigImg, $qCodeImg, 425, 761, 0, 0, 195,195,300,300);
//header('Content-Type: image/jpeg');
imagepng($bigImg,$imgdir);
@chmod($imgdir,0777);
imagedestroy($bigImg);
return $imgdir;
//imagepng($bigImg);
//exit;
}

 

/* *
* 图片圆角生成 这是复制的其他人的,哈哈哈
**/
function radius_img($imgpath = './t.png', $radius = 15) {
$ch = curl_init($imgpath);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
$txImg = imagecreatefromstring($data);//头像处理

$w = imagesx($txImg);
$h = imagesy($txImg);
$radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $radius; //圆 角半径
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($txImg, $x, $y);
if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {
//不在四角的范围内,直接画
imagesetpixel($img, $x, $y, $rgbColor);
} else {
//在四角的范围内选择画
//上左
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//上右
$y_x = $w - $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//下左
$y_x = $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//下右
$y_x = $w - $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
}
return $img;
}

转载于:https://www.cnblogs.com/hubudong/p/11551257.html

要在PHP中生成海报,你可以使用GD库来处理图像。首先,你需要创建一个画布,然后将背景图和二维码图像添加到画布上。接下来,你可以根据需要对图像进行缩放和调整大小。最后,你可以将生成的海报保存为图像文件或直接输出到浏览器。 下面是一个示例代码,演示了如何生成带有背景图和二维码的海报: ```php // 创建画布 $canvasWidth = 500; $canvasHeight = 700; $canvas = imagecreatetruecolor($canvasWidth, $canvasHeight); // 添加背景图 $backgroundImage = imagecreatefromjpeg('bg/bg1.jpg'); imagecopyresampled($canvas, $backgroundImage, 0, 0, 0, 0, $canvasWidth, $canvasHeight, imagesx($backgroundImage), imagesy($backgroundImage)); // 添加二维码图像 $qrcodeImage = imagecreatefrompng('qrcode/qrcode.png'); $qrcodeWidth = 178; $qrcodeHeight = 178; $qrcodeX = 116; $qrcodeY = 306; imagecopyresampled($canvas, $qrcodeImage, $qrcodeX, $qrcodeY, 0, 0, $qrcodeWidth, $qrcodeHeight, imagesx($qrcodeImage), imagesy($qrcodeImage)); // 输出海报 header('Content-Type: image/jpeg'); imagejpeg($canvas, null, 100); // 保存海报为图像文件 $filename = 'poster.jpg'; imagejpeg($canvas, $filename, 100); // 销毁画布和图像资源 imagedestroy($canvas); imagedestroy($backgroundImage); imagedestroy($qrcodeImage); ``` 请注意,上述代码中的路径和参数可能需要根据你的实际情况进行调整。此外,你还可以根据需要对图像进行进一步的处理和调整,例如缩放、裁剪等操作。 #### 引用[.reference_title] - *1* [php生成海报](https://blog.csdn.net/Jifei5201314/article/details/122896661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [PHP生成海报/PHP合并图片/PHP图片处理](https://blog.csdn.net/coolpan123/article/details/82221559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值