前言
说明
文件里只需要phpqrcode.php
文件。它是一个多个类的集合文件,我们需要用到里边的QRcode类(第2963行)的png()方法(第3090行):
1 2 3 4 5
| public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) { $enc = QRencode::factory($level, $size, $margin); return $enc->encodePNG($text, $outfile, $saveandprint=false); }
|
** 参数说明 **
$text
:二维码包含的内容,可以是链接、文字、json字符串等等;
$outfile
:默认为false
,不生成文件,只返回图片二进制字符串;否则填路径及文件名用以存放图片;
$level
:默认为L
,这个参数可传递的值分别是L
:(QR_ECLEVEL_L,7%)
、M
:(QR_ECLEVEL_M,15%)
、Q
:(QR_ECLEVEL_Q,25%)
、H
:(QR_ECLEVEL_H,30%)
,这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;
$size
:控制生成图片的大小,默认为4;
$margin
:控制生成二维码的空白区域大小;
$saveandprint
:保存二维码图片并显示出来,$outfile必须传递图片路径;
1. 生成二维码(文件流)
1 2
| $QR = QRcode::png($url, false, 'L', 5, 2); return $QR
|
2. 生成二维码(文件)
1 2 3 4 5 6 7 8 9 10 11 12 13
| $filename = 'qrcode/'.microtime().'.png'; QRcode::png($url,$filename,'L',5,2);
$QR = $filename; $QR = imagecreatefromstring(file_get_contents($QR));
imagepng($QR, 'qrcode.png'); imagedestroy($QR); return '<img src="qrcode.png" alt="">';
|
3. 二维码中加上logo(文件)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| $filename = 'qrcode/'.microtime().'.png'; QRcode::png($url,$filename,'H',6,2);
$logo = 'qrcode/logo.jpg'; $QR = $filename;
if (file_exists($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_height = imagesy($logo); $logo_qr_width = $QR_width / 4; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $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, 'qrcode.png'); imagedestroy($QR); imagedestroy($logo); return '<img src="qrcode.png" alt="">';
|
输出 base64 图片流
1 2 3 4 5 6 7 8
| ob_start(); QRcode::png($url, false, 'L', 5, 2); $img = ob_get_contents(); ob_end_clean(); $imgInfo = 'data:png;base64,' . chunk_split(base64_encode($img)); ob_flush(); echo $imgInfo;
|
参考资料
)[https://www.cnblogs.com/wanghaodong/p/11120051.html]