java实现二维码-实现方式3

本文介绍了如何使用Java生成和解析二维码。首先引入了Qrcode_A.jar和Qrcode_B.jar库,然后展示了创建二维码的代码,包括设置纠错等级、编码模式和版本,以及将数据绘制到BufferedImage上并保存为PNG文件。接着,提供了读取和解析二维码的代码,通过QRCodeDecoder类解码PNG图像,并输出解码后的字符串内容。

 java实现二维码-实现方式3

1.引入相关jar包Qrcode_A.jar和Qrcode_B.jar.jar

2.相关的代码如下:

创建二维码代码

package com.imooc.qrcode;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;

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 = "www.imooc.com";//内容

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 = 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]){
gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
}
}
}
}

gs.dispose();
bufferedImage.flush();
ImageIO.write(bufferedImage, "png", new File("E:MyNewWorkSpace\\code\\qrcode.png"));
}
}

解析二维码代码

package com.imooc.qrcode;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import jp.sourceforge.qrcode.QRCodeDecoder;

public class ReadQRCode {
public static void main(String[] args) throws IOException {
//指定文件路径
File file = new File("E:MyNewWorkSpace\\code\\qrcode.png");
BufferedImage bufferedImage = ImageIO.read(file);
QRCodeDecoder qrCodeDecoder = new QRCodeDecoder();
String result = new String(qrCodeDecoder.decode(new MyQRCodeImage(bufferedImage)),"gb2312");
System.out.println(result);
}
}



package com.imooc.qrcode;
import java.awt.image.BufferedImage;
import jp.sourceforge.qrcode.data.QRCodeImage;

public class MyQRCodeImage implements QRCodeImage {
BufferedImage bufferedImage;

public MyQRCodeImage(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();
}
}


相关资源下载地址:https://pan.baidu.com/s/1slruk1Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值