QRCode生成

来源:互联网 发布:淘宝旧货二手市场 编辑:程序博客网 时间:2024/06/14 07:26
官网地址 :https://github.com/zxing/zxing/


需要的jar包:core.3.3jar
            javase.3.3jar(貌似没用到)


支持所有类型的一维二维码(QR,OR等)


简单生成QRCode
       //进行编码为一维或二位的发昂发
MultiFormatWriter  writer=new MultiFormatWriter();


        String contents="你大爷";  //连接是url可以打开网址,或者下载
int width=200;
int height=200;
        //编码过程参数的设置
HashMap<EncodeHintType, Object> conf=new HashMap<>();
conf.put(EncodeHintType.CHARACTER_SET, "utf-8");
//制作了一个  二进制矩阵
BitMatrix matrix=writer.encode(contents, BarcodeFormat.QR_CODE, width, height,conf);   //类型  和  设置(提示可以不用写
        //二进制矩阵  转化图片  并输出
MatrixToImageWriter.writeToPath(matrix, "png", new File("f:/1.png").toPath());


复杂的二维码(1.可以简单的url,或者string信息2.可以添加图片3.可以设置颜色)
        原理:二维码有自己的纠错机制
        过程:通过生成简单的二位矩阵,将黑白信息传递给BufferImage来添加图片等
        如上……得到BitMatrix matrix;
        1.创建bufferImage QRCode  类型的二维码   通过之前的
    
        2.BufferedImage  QRCode=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    for(int x=0;x<width;x++) {
    for(int y=0;y<height;y++) {
            if(matrix.get(x, y)) {
            QRCode.setRGB(x, y, 0x000000);  //黑色,可以设置其他的颜色
            }else {
                QRCode.setRGB(x, y, 0xffffff);
            }
    }
    }          


        3.获取logo  (通过ImageIO在本地获取 ,在设置大小,方式
        int w=30,h=30;
BufferedImage  bufferedImage=ImageIO.read(new File("C:\\Users\\17854\\Desktop\\233lawliet.jpg"));
Image  imageLogo=bufferedImage.getScaledInstance(w,  h, Image.SCALE_FAST);   //设置logo的高宽   缩小方式-快速

        4.将logo合并
Graphics graphics=QRCode.getGraphics();
graphics.drawImage(imageLogo, (width-w)/2, (height-h)/2, null);  //居中


        5.生成本地
        ImageIO.write(QRCode, "png", new File("f://1.png"));




   //友情提示;二维码有一定容错率,所以图片添加不要过份大(自己别忘了扫码检测
原创粉丝点击