1、 PHPQRCode 是什么?php
PHPQRCode 基于 libqrencode 的 C 库开发, 提供建立二维码的 API.html
注意: PHPQRCode 的实现必须开启支持 GD2 扩展库 (通常状况下都是开启状态)thinkphp
2、如何安装?数组
composer require endroid/qrcodeapp
vendor
里.下载地址: https://sourceforge.net/projects/phpqrcode/files/composer
3、实现过程函数
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
<?php // index.php namespace app\index\controller; class Index { public function index() { $content = "thinkphp + Qrcode 类库内容测试"; $outfile = "./static/" . date('Ymd', time()) . '.jpg'; $level = "L"; $size = "14"; $margin = 12; $save = true; \PHPQRCode\QRcode::png($content, $outfile, $level, $size, $margin, $save); return view('index'); // 没有继承系统控制层基类, 因此用 view 渲染输出 } }
public/static
下后, 建立对应视图层文件 index.html
显示图片<!-- index.html --> <img src="./static/20190211.jpg" alt="Qrcode 类库测试图片">
4、测试结果测试
5、原始的二维码已经生成成功了, 但如何在原来的二维码基础加上 logo, 以加强宣传效果?网站
index.php
控制器文件新增个 test
方法用来测试原理: 用 php 图像生成和处理相关函数组合处理 logo 图和已生成的二维码图成一张新的二维码图ui
函数 | 做用 |
---|---|
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'); // 保存最终生成的二维码到本地 }
6、logo 二维码测试结果
test
方法获得 logo 二维码