二维码生成及简单原理

1.信息

2.信息转byte数组

3.画板--》内存

4.转换成boolean二维数组

具体原理:
1.创建信息对象
2.将信息转换为byte数组
3.创建图片缓冲对象
4.创建画板对象
5.创建二维码对象
6.对二维码属性进行配置和对图像大小进行配置。
7.将信息byte数组用二维码对象calQrcode(byte[])转换为boolean[][]
8.根据boolean[][]是否为true进行绘制方块
9.刷新

10.输出到本地

需要的工具包

 
com.swetake.util.Qrcode,
上传不了附件,百度网盘吧:
https://pan.baidu.com/s/1YI_DE7hortJ0FTkUjF_7PQ 密码:tp2c
        // 定义信息
        String message = "欢迎光临";

        // 定义byte[]
        byte[] messageByte = null;

        //定义图片文件缓冲对象
        BufferedImage bufferedImage = null;

        //定义画板 --就是图片的载体
        Graphics2D gs = null;

        //创建一个二维码对象
        Qrcode qrcode = new Qrcode();
        //对二维码进行属性设置
        //容错率L7 M15 Q25 H30
        qrcode.setQrcodeErrorCorrect('M');
        //设置编码方式
        qrcode.setQrcodeEncodeMode('B');
        //设置尺寸
        qrcode.setQrcodeVersion(5);
        //设置图像尺寸
        int len = 114;

        try {
            //将信息转换为byte[]
            messageByte = message.getBytes("utf-8");
            //创建图片缓冲对象
            bufferedImage =new BufferedImage(len,len,BufferedImage.TYPE_INT_RGB);
            //创建画板
            gs = bufferedImage.createGraphics();
            //设置背景色
            gs.setBackground(Color.white);
            //擦除从(0,0)到(len,len)的数据
            gs.clearRect(0,0,len,len);
            //设置画笔颜色
            gs.setColor(Color.black);
            //创建一个二维数组,该方法可以将byte数组转换为二维数组
            boolean[][] booleans = qrcode.calQrcode(messageByte);
            //开始正式的绘制
            for (int i=0,k=booleans.length;i<k;i++){
                for(int j=0;j<k;j++){
                    if(booleans[j][i]){
                        //画格子
                        gs.fillRect(j*3,i*3,3,3);
                    }
                }
            }
            //刷新
            gs.dispose();
            //输出本地
            File file = new File("C:\\Users\\oi\\Pictures\\生成的图片\\qrcode.png");
            //将图片保存到本地
            ImageIO.write(bufferedImage,"png",file);
            System.out.println("ok");

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值