java二维码生成读取

二维码再生活在无处不在,让我们用最简单的方法揭开二维码的神秘面纱

在开始之前,我们需要先引入二维码生成和读取的jar包,这里我用的是qrcodejar

链接:https://pan.baidu.com/s/1y5X7... 密码:6wi0
在这里我分享一个我用的,也可以直接去网上下载。

新建一个Java工程,在工程中添加一个lib目录,把两个Jar包放到lib目录下,不要忘了add as libiary

clipboard.png

clipboard.png

在build.gradle中添加配置
compile fileTree(dir:'lib',include:['*.jar'])
(这里我用的是gradle)

准备工作结束,马上开始

生成二维码

public class QRcodeTest {
    public static void main(String[] args) throws Exception{
        Qrcode qrcode = new Qrcode();
        qrcode.setQrcodeErrorCorrect('M');//纠错等级(分为L、M、H三个等级)
        qrcode.setQrcodeEncodeMode('B');//N代表数字,A代表a-Z,B代表其它字符
        qrcode.setQrcodeVersion(10);//版本
        //生成二维码中要存储的信息
        String qrData ="http://www.baidu.com";
        //设置一下二维码的像素
        int width = 67+12*(10-1);
        int height = 67+12*(10-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 = qrcode.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:/code/qrcodebd.png"));
    }

}

这样就可以生成一张二维码图片,扫描二维码,会跳转到百度首页。

二维码图片

public class MyQrCodeImage implements QRCodeImage {
    BufferedImage bufferedImage;

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

    public int getHeight() {
        return bufferedImage.getHeight();
    }

    public int getPixel(int arg0, int arg1) {
        return bufferedImage.getRGB(arg0, arg1);
    }

    public int getWidth() {
        return bufferedImage.getWidth();
    }

}

读取二维码

public class ReadQrCode {

    public static void main(String[] args) throws IOException {
        File file = new File("E:/code/qrcodebd.png");
        BufferedImage bufferedImage = ImageIO.read(file);
        Qrcode qrcode = new Qrcode();
        QRCodeDecoder codeDecoder = new QRCodeDecoder();
        String result = new String(codeDecoder.decode(new MyQrCodeImage(bufferedImage)),"gb2312");
        System.out.println(result);
    }
}

读取二维码的内容为http://www.baidu.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值