网络通讯及安全
本栏目责任编辑:代影
基于ZXing 开源库的二维码生成研究
文家朝,杨辉
(凯里学院,贵州凯里556011)
摘要:目前,二维码的应用已经相当广泛,在移动支付领域、绿食品溯源领域、在各种设备管理领域,都可以看到它的身
影。对个人而言,在使用二维码时,往往使用的是二维码提供商提供的服务,而很少在乎它是如何生成的。该文从二维码的开源工具ZXing 开始入手,研究二维码的生成。研究结果表明,使用开源工具生成的二维码,在可靠性和安全性上面,具有一定的优势。
关键词:二维码;QR 码;Zxing ;开源库;二维码生成中图分类号:TP311
文献标识码:A
文章编号:1009-3044(2021)03-0087-03
开放科学(资源服务)标识码(OSID ):
1二维码的由来
二维码,英语是Quick Response Code ,也叫QR 码,直译是快速响应码,是由日本的DENSO WAVE 公司于1994年发明[1]。由于比条形码可以存储更多内容等多种原因,二维码在以后的时间里得到了长足的发展。在中国,手机实现的二维码支付更是让二维码得到了广泛的应用,在全世界许多的国家和地区,二维码也得到了普及。在学术研究上面,二维码应用在了绿
食品溯源的研究[2]和医疗仪器设备的研究[3]
。
2现阶段二维码如何生成
在了解了二维码的由来以后,在现实生活中,如何去使用二维码,特别是如何去生成二维码,成为许多二维码应用需要解决的问题。
那么,二维码究竟是如何生成的呢?通过查询相关资料后发现,二维码的生成主要有两种方式:第一是借助二维码服务提供商生成二维码,第二是通过使用开源库自己生成二维码。目前二维码服务提供商提供的服务,大多使用服务器/浏览器模式生成二维码,有些简单的应用可以免费使用,而有些功能齐全,应用场景复杂的,则需要支付一定的费用才可以使用。
这两种方式各有优劣,下面将分别进行简单介绍。2.1二维码服务提供商生成
服务提供商生成二维码有它的优点和缺点,下面分别进行分析。
目前二维码的快速发展,成就了许许多多的二维码服务提供商。优秀的二维码提供商可以提供二维码生成、美化、印制、统计、管理等技术和行业解决方案,帮助用户在不同行业、不同场景,通过二维码减少信息沟通成本,提升营销和管理效率。用户在使用时,只要按照服务提供商提供的操作步骤操作,就可以方便地使用二维码,遇到问题还可以向客服寻求解决的办法。优秀的二维码服务提供商,可以提供一整套具体的一条龙
报务。在使用二维码服务提供商展开的研究中,也有不少的研
究,例如罗雁雁老师关于新生儿重症监护室贵重仪器管理中的应用中,就使用了著名草料二维码服务提供商展开研究[4]。
但是,正是由于二维码服务提供商众多,他们的规模、水平、服务质量就会有参差不齐,这样在使用二维码服务提供商提供的服务时,如果选择不好,就会遇到用户数据安全问题,因为生成的二维码,是存储在提供商的服务器上的,通常来说,用户需要先在提供商的网站上进行注册才可以使用,而且有些服务需要付费。2.2使用开源库生成
生成二维码的开发语言有许多种,根据不同的开发语言,
选择不相同的开源库,在生成二维码的研究中,有江苏财经职业技术学院的管小卫老师的基于python 开发语言生成二维码,包括生成普通二维码、高级二维码和带Logo 的二维码[5],桂林电子科技大学的陈元枝等老师基于Zxing 的彩二维码生成与识别[6]。
通过前期的调研以及根据自己擅长的编程语言种类,本文的研究最终选择ZXing 开源库来对二维码的生成进行研究。在选择开源库上面,使用Zxing 开源自己生成二维码,比使用二维码服务提供商提供的二维码有一个特别大的优势,那就是完全不用担心扫码会有风险,所跳转的页面是自己可以把握的。
ZXing 是Java 实现的开放源代码,它提供了可以处理许多
格式的条码图像处理库[7]
。
这里说的“许多格式”,也包括了在生活中常见的条形码和二维码,也就是说,可以利用ZXing 开源库来实现对条形码、二维码的生成。
本文重点研究使用Zxing 生成二维码,效果图如图1所示。研究目标大体步骤如下:
1)通过建立一个网站,输入条件可以分为三种:文本、网址以及上传文件。
2)当输入条件为文本时,输出内容是一个二维码图片,用手机扫描该二维码图片时,显示出该二维码包含的文本信息;
收稿日期:2020-10-08
作者简介:文家朝(1986—),男(苗族),贵州麻江人,讲师,硕士,主要研究方向为软件开发;杨辉(1982—),男,贵州贵定人,副教授,
硕士,主要研究方向为计算机辅助教育。
87
本栏目责任编辑:代影
网络通讯及安全
Computer Knowledge and Technology 电脑知识与技术第17卷第3期(2021年1月)
当输入条件为网址时,输出内容是一个二维码图片,用手机扫描该二维码图片时,自动跳转到该网址;当输入条件为上传文件时,输出内容是一个二维码图片,用手机扫描该二维码时,根据上传文件的类型,如果是音频文件,则打开该音频,可以播放,如果是视频文件,打开该视频,可以播放视频,如果是其他不能在线播放的文件,
则提示下载文件。
图1网页效果图
jsp中文全称3技术路线及问题解决
3.1网站建立
本系统使用Apache Tomcat 作为网站服务器,集成开发环
境为Eclipse ,在前台的开发上面,使用Dreamweaver 辅助开发。3.2表单的提交
本系统涉及三个表单的提交,分别对应文本、网址和文件上传。通过三个表单提交到三个对应的Servlet 。3.3用到的ZXing 包
ZXing 包,包含了许许多多的jar 包,在使用网页版处理Zx⁃ing 生成二维码的过程中,本系统只用到了core-3.3.3.jar 、core-3.3.3-javadoc.jar 和core-3.3.3-sources.jar 三个jar 包。将这三个包下载后,导入到Elipse 中的Build Path 中来。3.4中文乱码解决
中文乱码是许多的开发中都会遇到的问题,在本系统中,
涉及的中文乱码的解决有三个内容,分别是ZXing 中文乱码、Servlet 中文乱码以及jsp 页面中文乱码。3.4.1ZXing 中文乱码
在使用ZXing 生成二维码的过程中,如果使用默认的情况,不管是文本二维码的生成、网址二维码的生成还是上传文件的二维码生成,都不能很好地支持中文,会造成中文乱码,需要将输入内容中的中文,由“iso8859-1”转换为“utf-8”编码。例如,当输入文本是“这是一段中文”时,在java 代码中,需要做如下操作。
textString =“这是一段中文”;
textString =new Bytes(“iso8859-1”,“utf-8”));3.4.2Servlet 中文乱码
在提交到的Servlet 中,也需要对提交的中文进行处理。操作如下。
response.setCharacterEncoding(“UTF-8”);response.setHeader(“content-type ”,”text/html;charset=
UTF-8”);
request.setCharacterEncoding(“UTF-8”);3.4.3jsp 页面中文乱码
这个是在jsp 开发过程中最常见的,只需要设置<%@page language=“java ”contentType=“text/html;charset=UTF-8”pa⁃geEndcoding=”UTF-8”%>即可。3.5ZXing 生成二维码的步骤
使用ZXing 生成二维码,步骤其实不多,粗略的步骤如表1所示。
表1生成二维码步骤
步骤
1234
涉及的类
HashMap QRCodeWriter BufferdImage ImageIO
说明
设置纠错级别,有H 、L 、M 、Q 四个可选。设置编码,使用
UTF-8可防中文乱码设置使用二维码,生成尺寸大小设置使用的图片类型,例如RGB 和ARGB
生成图片
4系统测试
系统测试分为文本生成二维码、网址生成二维码、文件上
传生成二维码三种。4.1文本生成二维码
在文生成二维码的测试时,输入内容为“这是一段中文”,
在点击“生成二维码”按钮后,系统跳转到一个展示生成的二维码图片的页面,为了方便检查,同时在该二维码图片的上面显示该图片的路径。最后使用手机扫码工具,扫描生成的二维码,展示出扫码结果。如图2至图4
所示。
虚拟机和docker的区别图2
输入文本
图3
生成二维码
图4扫码结果
4.2网址生成二维码
在网址生成二维码测试时,使用人民网作为测试网址,输
三角函数大全表格88
网络通讯及安全
本栏目责任编辑:代影Computer Knowledge and Technology 电脑知识与技术
socket编程客户端向服务端发送数据第17卷第3期(2021年1月)
入内容为人民网的地址,即“www.people/”,在点击“提交”按钮后生成二维码,使用手机工具扫码后,跳转到人民网首页。如图5至图7
所示。
图5
输入网址
图6
生成二维码
图7扫码结果
4.3文件上传生成二维码
在文件上传生成二维码测试时,选择一个文件进行上传操
作,在点击“提交”按钮后,生成一个二维码图片,使用手机扫这个二维码时,提示下载该文件。如图8至图10
所示。
图8
选择上传文件
图9
生成二维码
图10扫码结果
5创新点及不足
本文主要探讨了基于ZXing 开源库的生成二维码的研究,
通过建立一个网站服务器,本系统使用Apache Tomcat 作为网站服务器,集成开发环境为Eclipse 。通
过三种输入内容,即文本、网址、文件上传,成功生成了对应的三种类别的二维码,由于是使用本地网络进行测试,故在使用手机进行扫码时,需要手机和本地网站服务器在同一个局域网内才能正常显示出扫码结果,要想在局域网外也可以正常扫出结果,还需要将网站发布到因特网去。
持续集成和迭代是敏捷重要的优秀实践本研究的创新点在于,通过建立本地网站服务器,使用ZX⁃ing 开源工具成功的生成二维码,文件和二维码存储在自己的本地服务器上,相对于使用二维码服务提供商,存储内容全在提供商的服务器上的这种方式,在从国家层面到个人层面都非常重视网络安全和数据安全的今天,它的可靠性和安全性更有保障。在使用ZXing 开源库生成二维码的研究中,上传视频、音频和其他文件的大小,理论上不受限制。在以后的研究中,可以将本文的研究作为基础,展开更大范围,更深入的研究。
由于人力及精力,自己开发生成的二维码,在应用的广泛程度上,不及目前比较流行的二维码提供商提供的服务。
参考文献:
[1]介绍:QR 码的成功之路[EB/OL].[2020-06-09].
www.qrcode/zh/history.
[2]施连敏,郭翠珍,盖之华,等.基于二维码的绿食品溯源系统的设计与实现[J].制造业自动化,2013,
35(16):144-146.
java和c++哪个工资高[3]郑梦静,何好好,谷甜甜.基于二维码技术的医疗仪器设备管理[J].中医药管理杂志,2020,28(14):51-52.
[4]罗雁雁.草料二维码在新生儿科重症监护室贵重仪器管理中的应用[J].当代护士(上旬刊),2020(5):174-175.
[5]管小卫.基于Python 的二维码生成与识别[J].科学技术与创新,2020(25):99-100.
[6]陈元枝,邓艳.基于Zxing 的彩QR 码的生成与识别方法[J].桂林电子科技大学学报,2016,36(4):333-336.
[7]介绍.ZXing 项目[EB/OL].[2020-08-20].github/zxing.
【通联编辑:谢媛媛】
89
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论