您的位置:首页 > 编程语言 > Java开发

java实现二维码-使用QR Code方式生成和解析二维码

2016-11-09 13:41 831 查看
1、下载压缩包:

生成:http://www.swetake.com/qrcode/index-e.jtml

读取:https://osdn.jp/projects/qrcode/
2、创建项目,将两个解压后的文件夹里的lib下的jar包都放在项目中。
3、创建类。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//生成二维码
public class CreateQRCode {

public static void main(String[] args) {
Qrcode x=new Qrcode();
x.setQrcodeErrorCorrect('M');//纠错等级
x.setQrcodeEncodeMode('B');//N代表数字,A表示a-Z,B表示其他字符(中文等)
x.setQrcodeVersion(7);//版本号
String qrData = "http://www.swetake.com/qrcode";
int width = 67+12*(7-1);
int height = 67+12*(7-1);

BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);//创建缓冲区的图片
Graphics2D gs = bufferedImage.createGraphics();
gs.setBackground(Color.white);
gs.setColor(Color.black);
gs.clearRect(0, 0, width, height);

int pixoff = 2;//偏移量

//填充画板 内容
byte[] d;
try {
d = qrData.getBytes("utf-8");

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);
}
}
}
}
gs.dispose();
bufferedImage.flush();

ImageIO.write(bufferedImage, "png", new File("D:/code/qrcode.png"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//创建实现接口的类,方便在生成二维码的类中调用
public class QR
4000
CodeImage implements jp.sourceforge.qrcode.data.QRCodeImage {
BufferedImage bufferedImage;

public QRCodeImage(BufferedImage bufferedImage) {
this.bufferedImage = bufferedImage;
}

@Override
public int getHeight() {

return bufferedImage.getHeight();
}

@Override
public int getPixel(int arg0, int arg1) {

return bufferedImage.getRGB(arg0, arg1);
}

@Override
public int getWidth() {

return bufferedImage.getWidth();
}

}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//读取二维码
public class ReadQRCode {

public static void main(String[] args) throws Exception {
File file = new File("D:/code/qrcode.png");
BufferedImage bufferedImage = ImageIO.read(file);

QRCodeDecoder codeDecoder = new QRCodeDecoder();
String result = new String(codeDecoder.decode(new QRCodeImage(bufferedImage)),"gb2312");
System.out.println(result);
}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息