zoukankan      html  css  js  c++  java
  • 生成二维码(带背景)本地测试方法

    public class QRCodeMax {
    
    
        //文字显示
        private static final int QRCOLOR = 0x201f1f; // 二维码颜色:黑色
        private static final int BGWHITE = 0xFFFFFF; //二维码背景颜色:白色
    
        // 设置QR二维码参数信息
        private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {
            private static final long serialVersionUID = 1L;
    
            {
                put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置QR二维码的纠错级别(H为最高级别)
                put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置编码方式
                put(EncodeHintType.MARGIN, 0);// 白边
            }
        };
    
        /**
         * 生成二维码图片+背景+文字描述
         *
         * @param fileName  生成图片的名称
         * @param bgImgFile 背景图地址
         * @param WIDTH     二维码宽度
         * @param HEIGHT    二维码高度
         * @param qrUrl     二维码识别地址
         * @param imagesX   二维码x轴方向
         * @param imagesY   二维码y轴方向
         */
        public static void CreatQRCode(File fileName, File bgImgFile, Integer WIDTH, Integer HEIGHT, String qrUrl,
                                       Integer imagesX, Integer imagesY) {
    
            try {
                MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
                // 参数顺序分别为: 编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
                BitMatrix bm = multiFormatWriter.encode(qrUrl, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
                BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
    
                // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF) 白(0xFF000000)两色
                for (int x = 0; x < WIDTH; x++) {
                    for (int y = 0; y < HEIGHT; y++) {
                        image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
                    }
                }
    
                /*
                 *     添加背景图片
                 */
                BufferedImage backgroundImage = ImageIO.read(bgImgFile);
                int bgWidth = backgroundImage.getWidth();
                int qrWidth = image.getWidth();
                //距离背景图片x边的距离,居中显示
                int disx = (bgWidth - qrWidth) - imagesX;
                //距离y边距离 * * * *
                int disy = imagesY;
                Graphics2D rng = backgroundImage.createGraphics();
                rng.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP));
                rng.drawImage(image, disx, disy, WIDTH, HEIGHT, null);
    
                rng.dispose();
                image = backgroundImage;
                image.flush();
    
                ImageIO.write(image, "png", fileName);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 测试
         *
         * @param args
         */
        public static void main(String[] args) {
            File bgImgFile = new File("D:/nums-project/industry/bud/operation/src/main/resources/static/t.jpg");//背景图片
            File QrCodeFile = new File("D:/data/img/6.jpg");//生成图片位置
            String url = "https://blog.csdn.net/weixin_38407595";//二维码链接
            String note = "";//文字描述
            String tui = "";//文字描述
    
            //宣传二维码生成
            //生成图地址,背景图地址,二维码宽度,二维码高度,二维码识别地址,文字描述1,文字描述2,文字大小,图片x轴方向,图片y轴方向,文字1||2xy轴方向
            CreatQRCode(QrCodeFile, bgImgFile, 200, 200, url, 308, 123);
    
        }
    }

    上面的方法,用来进行本地生成带二维码的测试方法

  • 相关阅读:
    活动精彩实录 | 在Kubernetes上自动运行Cassandra
    行业动态 | 利用云端Cassandra实时推送个性化广告
    技术基础 | 用JSON在抖音上发布动态——使用Stargate即可轻松实现
    Apache Cassandra——可扩展微服务应用程序的持久数据存储
    使用微服务构建现代应用程序
    何为“混合云”?
    Linux基本命令(5)管理使用者和设立权限的命令
    Linux基本命令(4)有关关机和查看系统信息的命令
    Linux基本命令(3)文件备份和压缩命令
    Linux基本命令(2)有关磁盘空间的命令
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/12074600.html
Copyright © 2011-2022 走看看