PHP生成二维码与识别二维码的方法详解【附源码下载】


Posted in PHP onMarch 07, 2019

本文实例讲述了PHP生成二维码与识别二维码的方法。分享给大家供大家参考,具体如下:

二维码的分类

  • 线性堆叠式二维码
  • 矩阵式二维码

二维码的优缺点

优点

  • 信息容量大
  • 编码范围广
  • 容错能力强
  • 译码可靠性高
  • 可引入加密措施
  • 成本低,易制作

缺点

  • 二维码技术成为手机病毒、钓鱼网站传播的新渠道
  • 信息泄密

目前流行的三大国际标准

  • PDF417:不支持中文
  • DM:专利未公开,需支付专利费用
  • QR CODE:专利公开,支持中文

QR CODE 纠错能力

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

前提条件

  • GD库

一、PHP生成QR CODE

  • 官网:http://phpqrcode.sourceforge.net/
  • 下载源码:https://github.com/endroid/qr-code

目录结构

PHP生成二维码与识别二维码的方法详解【附源码下载】

1、qrcode_create.php

ps:生成普通二维码

<?php
include_once "./qrcode/phpqrcode.php";
/**
 * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
 * 在浏览器上直接生成一个二维码(内容为abc)
 */
QRcode::png("abc");
QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);
/**
 * 生成文件到本地
 * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
 * PS:$saveandprint源码的p6参数做了修改
 */
QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);

2、qrcode_logo.php

ps:生成带Logo的二维码

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/8/16
 * Time: 10:43
 */
include "./qrcode/phpqrcode.php";
$txt = "测试内容";
$picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
$level = 'L';
$size = 5;
$is_logo = 1;//是否包含Logo 0否 1是
$margin = 2;//边距
$saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true
//生成二维码图片QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);
if($is_logo == 1){
 $QR = $picPathAndName; //已经生成的原始二维码图
 $Logo = './pic/logo.png';
 $Logo_re = './pic/test_logo.png';
 $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 / 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);
 //输出图片
 imagepng($QR, $Logo_re);
}

3、qrcode_vcard.php (生成电子签名)

vCard格式:https://zh.wikipedia.org/wiki/VCard

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/8/15
 * Time: 23:00
 */
require_once "./qrcode/phpqrcode.php";
/**
 * 生成电子签名
 * PS;使用微信扫描二维码
 */
$content = 'BEGIN:VCARD' . "\n";//起始标志
$content .= 'VERSION:2.1' . "\n";//当前版本
$content .= 'N:周' . "\n";//姓
$content .= 'FN:勇' . "\n";//名
$content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
$content .= 'TITLE:PHP研发程序员' . "\n";//职位
$content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
$content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
$content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
$content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
$content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
$content .= 'URL:www.baidu.com' . "\n";//个人主页
$content .= 'END:VCARD' . "\n";//结束标志
QRcode::png($content);

二、JQUERY生成QR CODE

源码地址:https://github.com/jeromeetienne/jquery-qrcode

jquery_create.php

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Jquery生成二维码</title>
 <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
 <script type="text/javascript" src="./jquery-qrcode/jquery.qrcode.min.js"></script>
</head>
<body>
<div id="qrcode"></div>
<script>
 //$('#qrcode').qrcode("this plugin is great");
 $('#qrcode').qrcode({width: 64,height: 64,text: "jason"});
</script>
</body>
</html>

三、PHP识别二维码

1、方法一

环境需求,安装如下扩展

  • - ImageMagick
  • - zbar
  • - php-zbarcode

2、方法二

PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以

qrReader类:https://github.com/baagee/php_QrReader

<?php
include_once('./qrReader/lib/QrReader.php');
$qrcode = new QrReader('./test_logo.png'); //图片路径
$text = $qrcode->text(); //返回识别后的文本
echo $text;
PHP 相关文章推荐
用PHP制作静态网站的模板框架
Oct 09 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
Nov 18 PHP
第六章 php目录与文件操作
Dec 30 PHP
php中in_array函数用法分析
Nov 15 PHP
php使用curl获取https请求的方法
Feb 11 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 #PHP
php使用fullcalendar日历插件详解
Mar 06 #PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 #PHP
浅谈PHP封装CURL
Mar 06 #PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 #PHP
PHP实现的敏感词过滤方法示例
Mar 06 #PHP
详解PHP 二维数组排序保持键名不变
Mar 06 #PHP
You might like
咖啡知识大全
2021/03/03 新手入门
php实现mysql数据库操作类分享
2014/02/14 PHP
js的with语句使用方法
2007/09/21 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
JS编程小常识很有用
2012/11/26 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python对象转换为json的方法步骤
2019/04/25 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python读取ini配置文件过程示范
2019/12/23 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
HEMA法国:荷兰原创设计
2019/02/21 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
《月迹》教学反思
2014/02/19 职场文书
热情服务标语
2014/10/07 职场文书
职称评定个人总结
2015/03/05 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
最新最全的手机号验证正则表达式
2022/02/24 Javascript
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL