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

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

  • 相关阅读:
    无线鼠标换电池了
    Jython Interactive Servlet Console YOU WILL NEVER KNOW IT EXECLLENT!!! GOOD
    Accessing Jython from Java Without Using jythonc
    jython podcast cool isnt't it?
    Python里pycurl使用记录
    Creating an Interactive JRuby Console for the Eclipse Environment
    微软为AJAX和jQuery类库提供CDN服务
    Download A File Using Cygwin and cURL
    What is JMRI?这个是做什么用的,我真没看懂但看着又很强大
    用curl 发送指定的大cookie的http/https request
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/12074600.html
Copyright © 2011-2022 走看看