QRCode 生成二维码

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);
	}
}







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值