QRCode 二维码

一、生成二维码

  1.二维码就是绘制成黑白相间的图片,所谓的黑白相间就是代表0和1 ,二维码大约可以容纳500多个中文,所以用途之广显而易见。

  所需的jar包  http://pan.baidu.com/s/1dFkWopj

package com.yqz;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

public class QrCodeTest {
static int width=67+12*(7-1);//67+12*(版本号-1)
static int height=67+12*(7-1);

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= "车港|123456";//二维码中的内容
qrdata = new String(qrdata.getBytes("UTF-8"), "ISO-8859-1");//兼容中文防止乱码,尤其针对微信(经验发现,好像gbk的微信就解释不了)
BufferedImage bufferImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D gs = bufferImage.createGraphics();//Java的画图工具

gs.setBackground(Color.white);//背景色为白色
gs.setColor(Color.black);//画图是黑色
gs.clearRect(0, 0, width, height);
int pixoff = 2;
byte[] d = qrdata.getBytes("ISO-8859-1");
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[i][j]){
gs.fillRect(i*3+pixoff, j*3+pixoff, 3, 3);
}
}
}
}
gs.dispose();
bufferImage.flush();

ImageIO.write(bufferImage, "png", new File("C:/Users/qizhou/Desktop/毕设/test2.jpg"));//将图片生成到本地
}
}

 

posted @ 2017-05-11 09:45  ThrownBug  阅读(273)  评论(0编辑  收藏  举报