PHP合成图片
1086 2024年01月19日 后端
/**
* 生成带二维码海报
* @param code 用户门票唯一标识
*/
public static function createPoster($code)
{
try{
$qrcode = self::createQrcode($code);
$qrcodeUrl = app()->getRootPath().'data/runtime/temp/'.uniqid().'.png';
file_put_contents($qrcodeUrl, file_get_contents($qrcode));
$bg_url = app()->getRootPath() . 'public/static/images/bg.jpg';
// 创建第一张图片的资源
$backgroundImage = imagecreatefromjpeg($bg_url); //w279 h1108
// 创建第二张图片的资源
$qrCodeImage = imagecreatefromjpeg($qrcodeUrl);
// 获取海报背景的宽度和高度
$backgroundWidth = imagesx($backgroundImage);
$backgroundHeight = imagesy($backgroundImage);
// 获取二维码的宽度和高度
$qrCodeWidth = 180;
$qrCodeHeight = 180;
// 计算二维码的位置,使其靠页脚放置
$qrCodeX = ($backgroundWidth - $qrCodeWidth) / 2; // 根据需要调整位置
$qrCodeY = ($backgroundHeight - $qrCodeHeight) - 146; // 根据需要调整位置
// 创建缩放后的二维码图像资源
$scaleFactor = 180 / imagesy($qrCodeImage);
// 计算缩放后的二维码尺寸
$scaledWidth = imagesx($qrCodeImage) * $scaleFactor;
$scaledHeight = imagesy($qrCodeImage) * $scaleFactor;
$scaledQRCodeImage = imagecreatetruecolor($scaledWidth, $scaledHeight);
imagecopyresampled(
$scaledQRCodeImage, // 目标图像资源
$qrCodeImage, // 源图像文件路径
0, // 目标图像的 x 坐标
0, // 目标图像的 y 坐标
0, // 源图像的 x 坐标
0, // 源图像的 y 坐标
$scaledWidth, // 目标图像的宽度
$scaledHeight, // 目标图像的高度
imagesx($qrCodeImage), // 源图像的宽度
imagesy($qrCodeImage) // 源图像的高度
);
// 将二维码复制到海报背景上
imagecopy($backgroundImage, $scaledQRCodeImage, $qrCodeX, $qrCodeY, 0, 0, $scaledWidth, $scaledHeight);
// 输出合成后的海报图像
$outputImagePath = app()->getRootPath().'data/runtime/temp/'.uniqid().'.jpg'; // 输出图像的保存路径
imagejpeg($backgroundImage, $outputImagePath);
//直接浏览器输出图片
// header('Content-Type: image/png');
//imagepng($backgroundImage);
// 释放资源
imagedestroy($backgroundImage);
imagedestroy($qrCodeImage);
return $outputImagePath;
}catch(\Exception $e){
Log::channel('wx')->info($e->getMessage());
return '';
}
}
php使用GD库完成海报上添加二维码
-
使用Echarts画甘特图
Echarts是一个非常强大的图表库, 下面我们来使用它来画甘特图,
-
go语言怎么连接mysql,并实现增删改查
要使用Go语言连接MySQL,需要使用第三方库。常用的库包括: 这里以go-sql-driver/mysql为 […]
-
beego实现模块化开发
Beego 框架可以通过模块化开发来提高项目的可维护性和可扩展性,可以将一个大型的应用划分为多个模块,每个模块独立维护,有自己的控制器、视图和模型等。
-
Beego实现JWT
Beego是一个基于Go语言的Web框架,实现JWT认证可以通过beego的中间件机制来实现,下面是一个简单的 […]
-
使用Axios+PHP+JWT实现登录认证
JWT(JSON Web Token),顾名思义就是可以在Web上传输的token,这种token是用JSON格式进行format的。它是一个开源标准(RFC7519),定义了一个紧凑的自包含的方式在不同实体之间安全的用JSON格式传输信息。
-
PHP解决雪花算法ID在前端精度丢失的问题
雪花算法(Snowflake)是一种用于生成全局唯一ID的算法,其基本思路是结合时间戳、机器ID、租约ID和序列号生成一个64位的数据,从而保证ID的唯一性。 雪花算法的生成过程如下:
-
虚拟滚动实现页面百万数据滚动
1.概念 虚拟滚动是一种优化长列表性能的技术,它通过按需渲染的方式,只渲染可见部分的列表项,而不是渲染整个列表 […]
-
go实现MD5
在这个示例中,我们使用了Go标准库中的crypto/md5包来计算一个字符串的MD5值。首先,我们将字符串转换 […]
-
Linux服务器Rsync结合inotify同步文件
一、实现效果 服务器A:192.168.161.150 (分布服务器)(rsync客户端+inotify) 服务器B:192.168.161.151 (WEB服务器1)(rsync服务端) 服务器C:192.168.161.152 (WEB服务器2)(rsync服务端) 说明:服务器A有文件更新,自动同步到服务器B和C
-
JavaScript实现滑动验证码
滑动验证码(也叫做滑动拼图验证码)是一种用户交互形式的验证码,通常用于网页或移动应用的登录、注册或敏感操作。其 […]