zoukankan      html  css  js  c++  java
  • 二维码的生成

    今天突然翻到以前写的代码,发现自己已经有一点忘记了,于是打算写一篇博客来重新回忆一下

    要用java代码生成二位码图片需要倒入QRCode.jar这个包,在http://mvnrepository.com/可以下载到。

    package edu.interview.utils;
    
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.UnsupportedEncodingException;
    
    import javax.imageio.ImageIO;
    
    import com.swetake.util.Qrcode;
    
    /**
     * 生成二维码图片
     * @author Holmes
     * @version 1.0
     */
    public class QRCodeUtils {
        /**
         * 生成二维码图片
         * @param path
         * @param content
         */
        public static void getQrCodeImg(String path, String content) {
        int width = 235;// 设置图片宽度
            int height = 235;// 设置图片高度
            // 创建QRCode对象
            Qrcode qrCode = new Qrcode();
            // 设置二维码排错率 可选项L(7%),M(15%),Q(25%),H(30%)
            qrCode.setQrcodeErrorCorrect('M');
            // 设置二进制
            qrCode.setQrcodeEncodeMode('B');
            // 设置版本
            qrCode.setQrcodeVersion(15);
    
            // 开始绘画图片,获取画板
            BufferedImage image = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_BGR);
            // 获得画笔
            Graphics2D grap = image.createGraphics();
            // 设置背景色
            grap.setBackground(Color.WHITE);
            // 清空内容,创建二维码区域
            grap.clearRect(0, 0, width, height);
            // 设置画笔颜色
            grap.setColor(Color.BLACK);
    
            try {
                // 获取内容字节数组,设置编码集
                byte[] byteContents = content.getBytes("UTF-8");
                boolean[][] codeOut = qrCode.calQrcode(byteContents);
                // 画二维码的给个矩形
                for (int i = 0; i < codeOut.length; i++) {
                    for (int j = 0; j < codeOut.length; j++) {
                        if (codeOut[j][i]) {
                            grap.fillRect(j * 3 + 10, i * 10 + 2, 3, 3);
                        }
                    }
                }
                //实例化Image对象
                Image img=ImageIO.read(new File("F:\WEB\source\avtar.png"));
                //画到画板
                grap.drawImage(img, 100, 100, 30, 30, null);
                
                // 释放资源
                grap.dispose();
                image.flush();
    
                File file = new File(path);
                ImageIO.write(image, "PNG", file);
                System.out.println("ok");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            QRCodeUtils.getQrCodeImg("F:\CSSDMOE\thanks.png", "谢谢你");
        }
    }
  • 相关阅读:
    浏览器相关,回流和重绘
    Vue相关,Vuex 通俗版教程
    关于Base64
    【1801日語听解4】第7回:4月14日
    【日語听解2】第6回:4月13日
    【日語視聴説2】第6回:4月13日
    【1701日本語新聞編集】第6回:4月10日
    【1801日語写作】第6回:4月8日
    【1801日本語新聞選読】第6回:4月7日
    【1801日語听解4】第6回:4月7日
  • 原文地址:https://www.cnblogs.com/googlemeoften/p/4894220.html
Copyright © 2011-2022 走看看