QRCode生成二维码直接百度云下载路径:链接: https://pan.baidu.com/s/1i4VVbdb 密码: bshi
QRCode解析二维码直接百度云下载路径:链接: https://pan.baidu.com/s/1nuElTYp 密码: hfur
生成二维码的下载
第一步:复制下载链接:http://www.swetake.com/qrcode/index-e.html在浏览器中打开,点击红框内的连接(document & libraries ......)
第二步:点击后进入页面,点击红框内的连接(上面两个是其他语言的,我们选择java)
第三步:直接点击红框内的下载
第四步:下载后,解压缩后的包展示
解析二维码的下载
复制下载链接:https://zh.osdn.net/projects/qrcode/ 因为内容是中文的,而且步骤简单,在这就不详细介绍了.
把下载下来的压缩包中的lib文件夹中的jar拷贝到项目中,注意修改一下名字,两个jar包名字一样,但是里面的类不一样,也可手动自己合并.
如果是maven项目到repository中搜索QRCode找到相关依赖
JAVA代码生成二维码
package com.crazy_qu.QRCode;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
/**
* QRCode生成二维码
* @author crazy
*
*/
public class CreateQRCode {
public static void main(String[] args) throws Exception {
Qrcode x=new Qrcode();//二维码类,对内容填充
x.setQrcodeErrorCorrect('M');//纠错等级LMQH
x.setQrcodeEncodeMode('B');//N代表数字, A代表a-Z, B代表其他字符
x.setQrcodeVersion(7);//QRCode的版本号,取值1-40
String qrData = "www.baidu.com";
int width = 67 + 12 * (x.getQrcodeVersion() - 1);//不通过这个计算,直接写一个设定值,二维码显示位置有误
int height = 67 + 12 * (x.getQrcodeVersion() - 1);
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);//清除画板内容
int pixoff = 2;//偏移量
byte[] d =qrData.getBytes("gb2312");//转换成字节数,如果存在汉字使用"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("D:/qrcode.png"));
}
}
JAVA代码解析二维码
package com.crazy_qu.QRCode;
import java.awt.image.BufferedImage;
public class QRCodeImage implements jp.sourceforge.qrcode.data.QRCodeImage {
private 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();
}
}
package com.crazy_qu.QRCode;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import jp.sourceforge.qrcode.QRCodeDecoder;
public class ReadQRCode {
public static void main(String[] args) throws Exception {
//指定文件位置
File file = new File("D:/qrcode.png");
//读取文件
BufferedImage bufferedImage = ImageIO.read(file);
QRCodeDecoder codeDecoder = new QRCodeDecoder();//QRCode译码器
String result = new String(codeDecoder.decode(new QRCodeImage(bufferedImage)), "gb2312");
System.out.println(result);
}
}