2019独角兽企业重金招聘Python工程师标准>>>
一、 PHPQRCode 是什么?
PHPQRCode 基于 libqrencode 的 C 库开发, 提供创建二维码的 API.
注意: PHPQRCode 的实现必须开启支持 GD2 扩展库 (一般情况下都是开启状态)
二、如何安装?
- 项目下通过 composer 安装
composer require endroid/qrcode
- 手动下载复制到 tp 项目下代表第三方类库目录
vendor
里.
下载地址: https://sourceforge.net/projects/phpqrcode/files/
三、实现过程
- 使用到
vendor\aferrandini\phpqrcode\lib\PHPQRCode
下的 png 方法
public static function png($text, $outfile = false, $level = Constants::QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint=false);
}
- 创建一个控制层文件
index.php
- 生成二维码保存到
public/static
下后, 创建对应视图层文件index.html
显示图片
四、测试结果
- 访问网站得到的效果图如下:
五、原始的二维码已经生成成功了, 但如何在原来的二维码基础加上 logo, 以增强宣传效果?
- 我在
index.php
控制器文件新增个test
方法用来测试
原理: 用 php 图像生成和处理相关函数组合处理 logo 图和已生成的二维码图成一张新的二维码图
函数 | 作用 |
---|---|
imagecreatefromstring | 根据字符串中的图像流创建一个新的图像, 也能检测图片格式, 条件是 php环境支持 JPEG,PNG,GIF,WBMP 和 GD2 |
file_get_contents | 将文件写到一个字符串中 |
imagesx | 获取图像宽度 |
imagesy | 获取图像高度 |
imagecopyresampled | 重新组合图片并调整大小 |
public function test()
{
$logo = './static/2.jpg'; // logo 图
$QR = './static/20190211.jpg'; // 已经生成的原始二维码图
if ($logo) {
$QR = imagecreatefromstring(file_get_contents($QR)); // 检测是否是图片
$logo = imagecreatefromstring(file_get_contents($logo));
$QR_width = imagesx($QR); // 二维码图片宽度
$QR_height = imagesy($QR); // 二维码图片高度
$logo_width = imagesx($logo); // logo 图片宽度
$logo_height = imagesy($logo); // logo 图片高度
$logo_qr_width = $QR_width / 10; // logo 图片在二维码图片中宽度大小
$scale = $logo_width / $logo_qr_width;
$logo_qr_height = $logo_height / $scale; // logo 图片在二维码图片中高度大小
$from_width = ($QR_width - $logo_qr_width) / 2;
// 重新组合图片并调整大小
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,
$logo_qr_height, $logo_width, $logo_height);
}
imagepng($QR, './static/logo.png'); // 保存最终生成的二维码到本地
}
六、logo 二维码测试结果