本文是我在慕课网学习以后的成果,感谢慕课网的老师。详细教程可参考 http://www.imooc.com/learn/531
关于二维码,先简单的介绍下(摘自百度百科):
在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,经过图象输入设备或光电扫描设备自动识读以实现信息自动处理。在许多种类的二维条码中,经常使用的码制有:Data Matrix,MaxiCode, Aztec,QR Code, Vericode,PDF417,Ultracode,Code 49,Code 16K等,QR Code码是1994年由日本DW公司发明。QR来自英文「Quick Response」的缩写,即快速反应的意思,源自发明者但愿QR码可以让其内容快速被解码。QR码最多见于日本、韩国;并为目前日本最流行的二维空间条码。但二维码的安全性也正备受挑战,带有恶意软件和病毒正成为二维码普及道路上的绊脚石。html
接下来咱们要作的就是使用QRcodeAPI来完成咱们的二维码生成程序:java
1.首先咱们要获取QRcode的Jar包:下载地址: http://www.swetake.com/qrcode/java/qr_java.html (点击tar.gz文件便可)
而后咱们去lib文件下将QRcode.jar导入咱们的项目。安全
2.开始咱们的编码工做。(首先介绍下二维码是有纠错能力,其有四个等级:L M Q H,通常使用M等级,注意若是你想生成的二维码是个网页连接,必须加上 http:/,不然扫码出来的只是你的url,例如 www.baidu.com 生成的二维码,扫描出来的结果就是这个url字符串而不会跳转到百度首页)工具
package com.smart.controller; import com.swetake.util.Qrcode; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; public class Gennerator { /** * 使用QRcode生成二维码 * @param args */ public static void main(String[] args) throws Exception{ Qrcode x = new Qrcode(); x.setQrcodeErrorCorrect('M');//设置纠错等级 x.setQrcodeEncodeMode('B');//设置编码格式 x.setQrcodeVersion(7);//设置版本(版本有多种,感兴趣的能够去研究二维码的发展历程,这里咱们选择第七版本) String qrData = "http://www.baidu.com"; int width = 67 + 12*(7-1);//67+12*(版本号-1) int height = 67+ 12*(7-1); int pixoff = 2;//设置偏移量 byte[] d = qrData.getBytes("gb2312"); BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics2D gs =bufferedImage.createGraphics();//使用java的画图工具 gs.setBackground(Color.white); gs.setColor(Color.black);//设置白底黑字 gs.clearRect(0,0,width,height); 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]) { gs.fillRect(j * 3+pixoff, i * 3+pixoff, 3, 3);//根据QRcode规则填充黑白点 } } } } gs.dispose(); bufferedImage.flush();//释放资源 ImageIO.write(bufferedImage,"png",new File("D:/qrcode.png"));//生成二维码,格式 png,文件地址 } }
生成的二维码以下:
扫一下试试吧!学习