QR Code的生成和读取在两个文件:
生成:QRcodeqrcode encoder (cgi programs/libralies) , QRcode demo and document of how to create
http://www.swetake.com/qrcode/index-e.html
读取:
オープンソースのQRコードデコードライブラリ プロジェクト日本語トップページ - OSDNhttps://ja.osdn.net/projects/qrcode/
提示:在相应的链接下载相应的资源库。
文章目录
- 系列文章目录
- 前言
- 一、QR Code是什么?
- 二、使用步骤
- 1.引入库
- 2.代码
- 总结
前言
在大数据背景下,移动终端作为公众信息处理分析与企业盈利的实现途径,不仅承担着大数据时代下信息获取传达与形式转换的重要责任,还被冠以互联网以及其相关产业商业模式与盈利模式创新的历史使命。二维码由于具有信息量大、强便捷性、制作成本低、进入门槛低、经济效益高等众多特点及优势,成为进入基于手机终端的互动营销与精准营销相结合的移动营销时代的重要媒介之一,并逐渐显现出其营销的增值作用。目前二维码在移动通信、文化演出、交通运输、金融、餐饮娱乐、旅游等多个行业展开实际应用,包括电子票务与凭证、企业日常营销、便捷生活等方面。
一、QR Code是什么?
QR Code码,是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。
主要特点:
1、符号规格从版本1(21×21模块)到版本40(177×177 模块),每提高一个版本,每边增加4个模块。
2、数据类型与容量(参照最大规格符号版本40-L级):
数字数据:7,089个字符
字母数据: 4,296个字符
8位字节数据: 2,953个字符
汉字数据:1,817个字符
3、数据表示方法:
深色模块表示二进制"1",浅色模块表示二进制"0"。
4、纠错能力:
L级:约可纠错7%的数据码字
M级:约可纠错15%的数据码字
Q级:约可纠错25%的数据码字
H级:约可纠错30%的数据码字
5、结构链接(可选)
可用1-16个QR Code码符号表示一组信息。每一符号表示100个字符的信息。
二、使用步骤
1.引入库
根据上面链接下载相应的资源库:
2.代码:
package com.qrcode;import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.font.GraphicAttribute;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.concurrent.locks.AbstractQueuedLongSynchronizer;import javax.imageio.ImageIO;import com.swetake.util.Qrcode;import jp.sourceforge.qrcode.data.QRCodeSymbol;
import jp.sourceforge.qrcode.reader.QRCodeDataBlockReader;public class CreateQRcode {public static void main(String[] args) throws IOException {Qrcode x=new Qrcode();x.setQrcodeErrorCorrect('M');//纠错等级x.setQrcodeEncodeMode('B');//n代表数字,A代表a-Z,B代表其他数字符x.setQrcodeVersion(7);//版本String qrData="https://blog.csdn.net/m0_55415725?spm=1000.2115.3001.5343";int width=67+12*(7-1);int height=67+12*(7-1);BufferedImage bufferedImage=new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics2D qs=bufferedImage.createGraphics();qs.setBackground(Color.white);qs.setColor(Color.black);qs.clearRect(0, 0,width, height);int pixoff=2; //偏移量byte[] d=qrData.getBytes("gb2312");if(d.length>0 && d.length<120) {boolean[][] s=x.calQrcode(d);for(int i=0;i<s.length;i++) {for(int j=0;j<s.length;j++) {if(s[j][i]) {qs.fillRect(j*3+pixoff,i*3+pixoff,3,3);}}}}qs.dispose();bufferedImage.flush();ImageIO.write(bufferedImage, "png", new File("D:/eclipse-workspace/code/image.png"));}}
总结:
提示:对于二维码宽度和高度的计算公式为67+12*(版本号-1);
下面是生成的二维码: