杨艳丽 段寿建
摘 要: 二维码具有储存量大、数据形式多样、信息保密性高、追踪性高、抗损性强、备援性大、成本低等特性。随着智能终端设备的普及,二维码技术在微信、浏览器、文件资料中得到广泛应用,用户通过智能手机、平板电脑等移动智能终端扫描二维码,便能轻松跳转到另一个页面或获取用户名片,给用户使用带来极大的便利。研究了在Web开发中用PHP和Jquery两种方式生成二维码的程序,实践证明了两种方法的有效性和灵活性。
关键词: 二维码; Web开发; PHP; Jquery
中图分类号:G354.46 文献标志码:A 文章编号:1006-8228(2018)06-35-03
The generation and application of QR code in the Web development
Yang Yanli1, Duan Shoujian2
(1. College of mathematics, BaoShan University, Baoshan, Yunnan 678000, China; 2. College of information, BaoShan University)
Abstract: Two dimensional code has the characteristics of large storage, diverse data form, information confidentiality, high traceability, strong resistance to damage, large backup and low cost. With the popularization of intelligent terminal equipment, two-dimensional code technology has been widely used in WeChat, browsers and files. Users can easily jump to another page or obtain user card on the mobile intelligent terminals such as smart phones and tablet computers, which can bring great convenience to users. In this paper, two methods to generate QR code in the Web development with PHP and Jquery are studied respectively. The practice proves that both the methods are effective and flexible.
Key words: QR code; Web development; PHP; JQuery
0 引言
近年來,随着移动互联网、物联网、云计算、大数据等新技术发展,“扫一扫”在微信、浏览器、文件资料中得到普通应用[1]。用户通过智能手机、平板电脑等移动智能终端扫描“二维码”,便能轻松跳转到另一个页面或获取用户名片,给用户使用带来极大的便利。本文重点介绍二维码的知识,分析在Web开发中实现二维码的生成,对Web开发有很好的指导意义。
1 二维码技术概述
二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息。二维码在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。二维条码具有储存量大、数据形式多样,有一定的容错性,还可以存储网址信息[2],信息保密性高、追踪性高、抗损性强、备援性大、成本便宜等特性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。
QR(Quick-Response)code是Denso公司于1994年研制的一种矩阵二维码,是目前被广泛使用的一种二维码,其解码速度快,具有一维条码及其他二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。QRcode的基本结构如图1所示[3]。
⑴ 位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异。
⑵ 校正图形:规格确定,校正图形的数量和位置也就确定了。
⑶ 格式信息:表示改二维码的纠错级别,分为L、M、Q、H。
⑷ 版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21×21(版本1),到177×177(版本40),每一版本符号比前一版本 每边增加4个模块。
⑸ 数据和纠错码字:实际保存的二维码信息和纠错码字(用于修正二维码损坏带来的错误)。
2 使用PHP生成带个性化logo的二维码
2.1 准备工作
在开发前安装好WAMP环境,开启PHP的GD库,在PHP QRcode的官方网站http://phpqrcode.sourceforge.net/下载QRcode源码,将源码程序文件夹phpqrcode存放 在PHP站点下。phpqrcode.php定义了生成二维码图片函数png(),png()方法参数如下[4]:
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);
}
参数说明如下。
第一个参数:$text,设计需要生成二维码的字符。
第二个参数:$outfile,默认为否,不生成文件,只将二维码图片返回,否则需要给出存放生成二维码图片的路径。
第三个参数:$level,默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)。这个参数用于控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比。利用二维维码的容错率,用户可以将个性化的logo放置在生成的二维码图片任何区域。
第四个参数:$size,控制生成图片的大小,默认为4。
第五个参数:$margin,控制生成二维码的空白区域大小。
第六个参数:$saveandprint,保存二维码图片并显示出来。
2.2 制作生成带个性化logo的二维码的网页
准备一张个性化图标文件,命名为logo.png,新建PHP文件,具体代码及注释如下:
<?php
include "phpqrcode/qrlib.php"; //引用QRcode代码包
$value='http://www.bsnc.cn'; //需要生成二维码的字符
$QRLevel='H'; //设置容错级别
$QRSize=6; //生成图片大小
QRcode::png($value, 'qrcode.png', $QRLevel,
$QRSize, 2); //生成二维码图片
$logo='logo.png'; //准备好的个性化logo图片
$QR='qrcode.png'; //已经生成的原始二维码图
//以下代码生成带个性化图标二维码
if ($logo!==FALSE) {
$QR=imagecreatefromstring(file_get_contents($QR));
//载入二维码图像
$logo=imagecreatefromstring(file_get_contents($logo));
//载入个性化的logo图像
$QRWidth=imagesx($QR); //设置二维码图片宽度
$QRHeight=imagesy($QR); //二维码图片高度
$logoWidth=imagesx($logo); //logo图片宽度
$logoHeight=imagesy($logo); //logo图片高度
$logoQRWidth=$QRWidth/5;
$scale=$logoWidth/$logoQRWidth;
$logoQRHeight=$logoHeight/$scale;
$fromWidth=($QRWidth-$logoQRWidth)/2;
//重新组合图片并调整大小
imagecopyresampled($QR, $logo, $fromWidth,
$fromWidth, 0, 0, $logoQRWidth, $logoQRHeight,
$logoWidth, $logoHeight);
}
//输出组合的图片
imagepng($QR, 'resultPic.png');
echo '';
?>
网页运行程序后,生成如图2所示的带个性化logo二维码图片:
开发者可以通过调节程序中的各个参数,生成所需的二维码图片。
3 使用Jquery生成QRcode二维码
⑴ 准备工作
下载基于jquery的二维码生成插件qrcode,下载jquery.qrcode.min.js和jquery.min.js,网址分别为:https://github.com/jeromeetienne/jquery-qrcode/和https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js[5]。
⑵ 制作生成二维码的网页
新建html文件,具体代码及注释如下:
4 结束语
在Web开发中,生成二维码为用户浏览提供了高效的访问方式,本文分析了二维码的基本原理,详细分析了用PHP和Jquery两种方法生成二维码的程序代码,用PHP生成适用于动态网页,用Jquery生成适用于静态网页,两种方法程序代码简洁、参数可调节、应用性强,在Web开发中有很好的指导意义。
二维码提供了的信息移动性便捷性,在物联网和电子商务的推動下,二维码的应用前景必将越来越好,二维码的安全是需要进一步研究的问题。
参考文献(References):
[1] 于成丽,胡万里.二维码的前世今生[J].保密科学技术,
2017.12:57-62
[2] 周乐乐,赵超越,祁南南等.基于图像隐藏和二维码技术的农
产品追溯体系研究[J].吉首大学学报,2017.6:120-124
[3] 草料二维码.QR码原理详解[EB/OL].https://cli.im/news/
260/(2018-03)
[4] 方信工作室.使用PHP QR Code生成二维码[EB/OL].https:
//www.cnblogs.com/txw1958/p/phpqrcode.html(2018-03)
[5] 慕课网.实例学习 PHP QRCode生成二维码[EB/OL].http:
//www.imooc.com/learn/862/(2018-03)