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
ajax缓存问题解决途径
Dec 06 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
ThinkPHP路由机制简介
Mar 23 PHP
php简单复制文件的方法
May 09 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
Smarty安装配置方法
2008/04/10 PHP
CodeIgniter中实现泛域名解析
2014/07/19 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
python机器学习之神经网络实现
2018/10/13 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Python pip 常用命令汇总
2020/10/19 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
CLR与IL分别是什么含义
2016/08/23 面试题
一些Unix笔试题和面试题
2012/09/25 面试题
城市规划毕业生求职信
2013/10/10 职场文书
课外科技活动总结
2014/08/27 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
初三数学教学反思
2016/02/17 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB