1、下载phpqrcode:
下载地址:https://sourceforge.net/projects/phpqrcode/
2、使用phpqrcode.php中的png方法生成二维码:
![](https://img.haomeiwen.com/i8444785/4e93316c3394a961.png)
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);
}
第1个参数outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;
第3个参数size:控制生成图片的大小,默认为4;
第5个参数saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;
3、普通二维码:
function getQrenCode($parem=''){
require_once './phpqrcode/phpqrcode.php';
$value = $parem; //二维码内容
$errorCorrectionLevel = 'L'; //容错级别
$matrixPointSize = 8; //生成图片大小
$filename = 'qrcode/'.mt_rand().microtime().'.png'; //生成二维码图片
QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 4);
$QR = $filename; //已经生成的原始二维码图片文件
$QR = imagecreatefromstring(file_get_contents($QR));
//输出图片
imagepng($QR, 'qrcode.png');
imagedestroy($QR);
return '<img src="qrcode.png" alt="">';
}
echo getQrenCode('https://www.jd.com');
效果:
![](https://img.haomeiwen.com/i8444785/9a13b3b9796ae104.png)
4、生成带logo二维码 并保存
/**
* 生成带logo得二维码
* @param $url
*/
function scerweima1($url='')
{
require_once './phpqrcode/phpqrcode.php';
$value = $url; //二维码内容
$errorCorrectionLevel = 'H'; //容错级别
$matrixPointSize = 6; //生成图片大小
//生成二维码图片
$path = './qrcode/';
$filename = mt_srand() . time() . '.png';//生成二维码图片
QRcode::png($value, $path . $filename, $errorCorrectionLevel, $matrixPointSize, 2);
$logo = 'qrcode/logo.jpg'; //准备好的logo图片
$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图片宽度
$logo_height = imagesy($logo); //logo图片高度
$logo_qr_width = $QR_width / 4; //组合之后logo的宽度(占二维码的1/5)
$scale = $logo_width / $logo_qr_width; //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height / $scale; //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2; //组合之后logo左上角所在坐标点
//重新组合图片并调整大小
/*
* imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
*/
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
imagepng($QR, $filename);
copy($filename, $path . '/' . $filename); //移动图片到路径下
}
}
效果:
![](https://img.haomeiwen.com/i8444785/3f039ceb99dd41c0.png)
最后附上在项目中得使用方法:
/**
* 生成二维码
* @param string $url 链接
* @param $errorCorrectionLevel //容错级别
* @param $matrixPointSize // 控制生成图片的大小
* @param $margin //控制生成二维码的空白区域大小
* @param null $isLogo //是否带logo
* @return string
*/
public function getQrenCode($url='',$errorCorrectionLevel='L',$matrixPointSize=6,$margin = 2,$isLogo=null){
$res = ErrSvc::getErrInfo(ErrSvc::ERR_OK);
if($url == "" ){
$res = ErrSvc::getErrInfo(ErrSvc::ERR_GETQRENCODE_URL);
}else{
require_once '/phpqrcode/phpqrcode.php';
$path = './qrcode/';
$filename = mt_srand().time().'.png';//生成二维码图片
\QRcode::png($url,$path.$filename , $errorCorrectionLevel, $matrixPointSize, $margin);
if($isLogo){
$QR = $path.$filename;
$this->getQrenCodeLogo($QR,$filename,$path);
}
$res['fileName'] = $path.$filename;
}
return $res;
}
/**
* 生成带logo得二维码
* @param $QR
* @param $filename
* @param $path
*/
private function getQrenCodeLogo($QR,$filename,$path)
{
$logo = './qrcode/logo.jpg'; //准备好的logo图片
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图片宽度
$logo_height = imagesy($logo); //logo图片高度
$logo_qr_width = $QR_width / 4; //组合之后logo的宽度(占二维码的1/5)
$scale = $logo_width/$logo_qr_width; //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height/$scale; //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2; //组合之后logo左上角所在坐标点
//重新组合图片并调整大小
/*
* imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
*/
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
imagepng($QR,$filename );//带Logo二维码
copy($filename,$path.'/'.$filename);
}
}
网友评论