首先下载类库文件,下载地址:https://pan.baidu.com/s/1JfPTW-X5OmaapxS0eege8g,提取码:77lc ,在项目中引用后直接调用相关方法。
直接生成二维码(参数及注释直接追踪源码查看):
QRcode::png();
部分源码:
/**
* @param $text 二维码信息如一个网址或一段文字
* @param bool $outfile 需要输出的二维码图片地址 如./test.png
* @param int $level 容错率,也就是有被覆盖的区域还能识别,
* 分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)
* @param int $size 二维码大小
* @param int $margin 边框空白距离大小
* @param bool $saveandprint 是否保存二维码并显示
*/
public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 6, $margin = 2, $saveandprint=false)
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint);
}
生成带logo的二维码:
QRcode::png_log();
部分源码:
/**
* @param string $text
* @param string $log
* @param string $png
* @param string $png_log
* @param int $level
* @param int $size
* @param int $margin
* @param bool $saveandprint
* @return bool
*/
public static function png_log($text='',$logo='',$png='',$png_log='',$level = QR_ECLEVEL_L,$size = 6, $margin = 2, $saveandprint=false){
self::png($text,$png,$level,$size,$margin,$saveandprint);
if(file_exists($logo)){
$QR = imagecreatefromstring(file_get_contents($png));
$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 / 5;
$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);
return imagepng($QR,$png_log);
}
return false;
}