PHP借助QRCode技术实现二维码

【今日推荐】:为什么一到面试就懵逼!>>> hot3.png

  • 目录
  • 1. 前言
  • 2. 二维码类型
  • 2.1线性堆叠式二维码
  • 2.2 矩阵式二维码
  • 3. 二维码特点
  • 4. QR Code
  • 4.1二维码标准
  • 4.2 QR Code概念
  • 4.3 QR Code纠错能力
  • 5. 实例实战
  • 5.1 前期准备
  • 5.2 PHP生成QR Code
  • 5.3 PHP生成电子名片
  • 5.4 PHP识别二维码
  • 5.5 JQuery生成QR Code
  • 5.6 封装二维码类
  • 5.6.1 生成二维码(生成图片文件)
  • 5.6.2 生成二维码(不生成图片文件),直接输出二维码到浏览器中
  • 5.6.3 在生成的二维码中加上logo(生成图片文件)
  • 6. 总结

1.前言

二维码使用某种特定的几何图形按一定规律在平面分布的黑白相间图形记录数据符号信息,在代码编制上巧妙利用0和1比特流的概念

代码分享:https://github.com/mtdgclub/phpqrcode

2.二维码类型

2.1线性堆叠式二维码

堆叠式/行排式二维条码(又称堆积式二维条码或层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。

2.2 矩阵式二维码

矩阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”

3.二维码特点

优点:信息容量大、编码范围广、容错能力强、驿码可靠性高、可引入加密措施、成本低、易制作

缺点:信息泄露、易成为病毒和钓鱼网站传播渠道

4.QR Code

4.1二维码标准

目前流行的三大国际标准

  • PDF417:不支持中文
  • DM:专利未公开
  • QR Code:专利公开,支持中文

4.2 QR Code概念

QR Code码,英文名称Quick Response Code是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。QR Code码比其他二维码相比,具有识读速度快、数据密度大、占用空间小的优势。

PHP借助QRCode技术实现二维码_第1张图片

up-7a4d161e0cd17b86b6955d4f4f88009cf33.png

4.3 QR Code纠错能力

  • L级:约可纠错7%的数据码字
  • M级:约可纠错15%的数据码字
  • Q级:约可纠错25%的数据码字
  • H级:约可纠错30%的数据码字

5.实例实战

5.1 前期准备

phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/
PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态)

5.2 PHP生成QR Code


//引入文件
include "phpqrcode/qrlib.php";
//png($text,$outfile=false,$level=QR_ECLEVEL_L,$size=3,$margin=4,$saveandprint=false)
//第一个参数:文本内容
//第二个参数:保存的位置
//第三个参数:容错级别
//第四个参数:大小
//第五个参数:边距
//第六个参数:是否同时保存文件并打印
QRcode::png('abc');

up-b2cbf1f877ffed827690fd0a45c9fd32b08.png

5.3 PHP生成电子名片

//案例1:生成电子名片
$content = 'BEGIN:VCARD'."\n";
$content .= 'VERSION:2.1'."\n";
$content .= 'N:方'."\n";//姓
$content .= 'FN:智杰'."\n";//名
$content .= 'ORG:东莞XXX科技有限公司'."\n";//公司地址
$content .= 'TEL;WORK;VOICE:18902696838'."\n";//工作单位电话
$content .= 'TEL;HOME;VOICE:18902696838'."\n";//家庭电话
$content .= 'TEL;TYPE=cell:18902696838'."\n";//移动电话
$content .= 'ADR:HOME:;;厚街镇厚街大道31号;东莞市;433330;中国'."\n";//家庭住址
$content .= 'EMAIL:[email protected]'."\n";//邮箱
$content .= 'URL:http://mtdgblog.com'."\n";//网址
$content .= 'END:VCARD'."\n";
QRcode::png($content);

PHP借助QRCode技术实现二维码_第2张图片

5.4 PHP识别二维码

//案例2:PHP识别二维码
$image = new ZBarCodeImage('fangzhijie.jpg');
$scanner = new ZBarCodeScanner();
$barcode = $scanner->scan($image);
if(!empty($barcode)){
    foreach ($barcode as $code){
        printf("Found type %s barcode with data %s\n",$code['type'],$code['data']);
    }
}

5.5 JQuery生成QR Code

jquery.qrcode.min.js下载地址:https://github.com/jeromeetienne/jquery-qrcode


//案例3:JQuery生成QR Code
?>



    
    
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    
    qrcode







PHP借助QRCode技术实现二维码_第3张图片

5.6 封装二维码类

5.6.1生成二维码(生成图片文件)

public function createQr($url,$src,$level='L',$size=5){
    //定义二维码图片名
    $fileName = 'qrcode/'.microtime().'.png';
    //检测目录是否存在,不存在则自动创建
    $position = strrpos($fileName,'/');
    $path = substr($fileName,0,$position);
    if(!file_exists($path)){
        mkdir($path,0777,true);//创建目录
    }
    QRcode::png($url,$fileName,$level,$size,2);
    $QR = $fileName;
    $QR = imagecreatefromstring(file_get_contents($QR));
    //输出图片
    imagepng($QR,'qrcode.png');
    imagedestroy($QR);
    return "".$src."";
}

5.6.2 生成二维码(不生成图片文件),直接输出二维码到浏览器中

public function createQr2($url,$level='L',$size=5){
    $QR = QRcode::png($url,false,$level,$size,2);
    return $QR;
}

5.6.3 在生成的二维码中加上logo(生成图片文件)

public function addLogo($url,$src,$logo_url,$level='L',$size=5){
    //定义二维码图片名
    $fileName = 'qrcode/'.microtime().'.png';
    //检测目录是否存在,不存在则自动创建
    $position = strrpos($fileName,'/');
    $path = substr($fileName,0,$position);
    if(!file_exists($path)){
        mkdir($path,0777,true);//创建目录
    }
    QRcode::png($url,$fileName,$level,$size,2);
    $QR = $fileName;
    //开始准备logo添加操作
    if(file_exists($logo_url)){
        $QR = imagecreatefromstring(file_get_contents($QR));//目标图像资源
        $logo = imagecreatefromstring(file_get_contents($logo_url));//源图像资源
        $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宽度
        $scale = $logo_width/$logo_qr_width;//宽度缩放比
        $logo_qr_height = $logo_height/$scale;//组合后的logo高度
        $from_width = ($QR_width-$logo_qr_width)/2;//组合后logo左上角所在坐标
        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);
    return "".$src."";
}

PHP借助QRCode技术实现二维码_第4张图片

6.总结

随着移动端的发展,二维码技术越来越得到广泛的应用,掌握二维码的生成技术,将助力你开发的项目得到更好的宣传。

你可能感兴趣的:(PHP借助QRCode技术实现二维码)