精华内容
下载资源
问答
  • Java二维码生成

    2018-03-31 14:26:59
    JAVA二维码生成JAVA二维码生成JAVA二维码生成JAVA二维码生成JAVA二维码生成
  • java 二维码生成

    2017-07-06 15:33:00
    google开源接口,java二维码生成
  • java二维码生成

    2012-08-21 21:27:19
    java二维码生成
  • java 二维码 生成

    2015-04-21 15:31:25
    java 二维码生成代码,包含详细的注释。可以方便的阅读和快速使用。
  • Java二维码生成 Java二维码生成 Java二维码生成 Java二维码生成 Java二维码生成 Java二维码生成
  • java 二维码生成java 二维码生成java 二维码生成java 二维码生成java 二维码生成
  • Java 二维码生成

    2019-12-04 19:37:50
    二维码生成,前端和后端都可以生成。前端通过:qrcode.js,可以自行百度。 我这边主要记录下Java生成二维码的步骤: 创建二维码矩阵信息 生成二维码图片 二维码中心添加logo 将二维码写入背景图片 下图就是生成...

    先说下需求:

       做一个推广项目,根据访问url生成二维码,用户通过识别二维码就可以访问应用。

    二维码生成,前端和后端都可以生成。前端通过:qrcode.js,可以自行百度。

    我这边主要记录下Java生成二维码的步骤:

    1. 创建二维码矩阵信息
    2. 生成二维码图片
    3. 二维码中心添加logo
    4. 将二维码写入背景图片

    下图就是生成好

    二维码:

    带logo二维码:

    加背景的二维码:

     

    代码如下:(**ImageIo读取图片流可能会造成图片出现颜色失真,自行百度处理**)

     

    package cn.medbanks.backend.market.center.biz.common.utils;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    import java.awt.BasicStroke;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Hashtable;
    
    import javax.imageio.ImageIO;
    
    import org.springframework.core.io.ClassPathResource;
    
    import lombok.extern.slf4j.Slf4j;
    
    /**
     * 二维码生成工具类
     * @author huaxiaozhou
     * @since 2019-11-26 09:56
     */
    @Slf4j
    public class QRCodeUtils {
    
        private static final int BLACK = 0xFF000000;//黑色
        private static final int WHITE = 0xFFFFFFFF;//白色
        private static final int margin = 0;//边框
        private static final int LogoPart = 4;//
    
        /**
         * 生成二维码矩阵信息
         *
         * @param url    二维码图片内容
         * @param width  二维码图片宽度
         * @param height 二维码图片高度
         */
        public static BitMatrix setBitMatrix(String url, int width, int height) {
            Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定编码方式,防止中文乱码
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 指定纠错等级
            hints.put(EncodeHintType.MARGIN, margin); // 指定二维码四周白色区域大小
            BitMatrix bitMatrix = null;
            try {
                bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, hints);
            } catch (WriterException e) {
                e.printStackTrace();
            }
            return bitMatrix;
        }
    
        /**
         * 生成二维码图片
         *
         * @param matrix 二维码矩阵信息
         */
        public static BufferedImage toBufferedImage(BitMatrix matrix) {
            int width = matrix.getWidth();
            int height = matrix.getHeight();
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
                }
            }
            return image;
        }
    
        /**
         * 在二维码图片中添加logo图片
         *
         * @param image    二维码图片
         * @param logoLocation logo图片
         */
        public static BufferedImage addLogo(BufferedImage image, String logoLocation) throws IOException {
            Graphics2D g = image.createGraphics();
            BufferedImage logoImage = getClassPathResource(logoLocation);
            // 计算logo图片大小,可适应长方形图片,根据较短边生成正方形
            int width = image.getWidth() < image.getHeight() ? image.getWidth() / LogoPart : image.getHeight() / LogoPart;
            int height = width;
            // 计算logo图片放置位置
            int x = (image.getWidth() - width) / 2;
            int y = (image.getHeight() - height) / 2;
            // 在二维码图片上绘制logo图片
            g.drawImage(logoImage, x, y, width, height, null);
            // 绘制logo边框,可选
            //        g.drawRoundRect(x, y, logoImage.getWidth(), logoImage.getHeight(), 10, 10);
            g.setStroke(new BasicStroke(2)); // 画笔粗细
            //g.setColor(Color.WHITE); // 边框颜色
            g.drawRect(x, y, width, height); // 矩形边框
            logoImage.flush();
            g.dispose();
            return image;
        }
    
        /**
         * 将二维码图片画到背景图片里
         * zhouxiaoyu.add 20191127
         *
         * @param image 二维码图片
         * @param bgLocation 背景图片路径
         */
        public static BufferedImage addQRImage(BufferedImage image, String bgLocation) throws IOException {
            //1.获取背景图片BufferedImage
            BufferedImage BGImage = getBufferedImage(bgLocation);
            //2.将二维码画入背景图片中
            Graphics2D g = BGImage.createGraphics();//创建画板对象
            int x = (BGImage.getWidth() - image.getWidth()) / 2;
            int y = BGImage.getHeight() / 4;//设置画板纵坐标,高度的1/4
            /**
             * 二维码长度为横坐标4/6的长度, x+10,居中显示
             * 二维码的高度为纵坐标2/4,y+10:文案空出一点距离
             */
            g.drawImage(image, x, y + 10, image.getWidth(), image.getHeight(), null);
            BGImage.flush();
            g.dispose();
            return BGImage;
        }
    
        /**
         * 获取 ClassPathResource 下图片
         * @param resouceLocation
         * @return
         * @throws IOException
         */
        private static BufferedImage getClassPathResource(String resouceLocation) throws IOException {
            ClassPathResource cpr = new ClassPathResource(resouceLocation);
            return ImageIO.read(cpr.getInputStream());
        }
    
        /**
         * 拷贝新图片,解决流颜色失真
         * @param resouceLocation
         * @return
         * @throws IOException
         */
        private static BufferedImage getBufferedImage(String resouceLocation) throws IOException {
            BufferedImage img = getClassPathResource(resouceLocation);
            BufferedImage newImg = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_RGB);
            newImg.getGraphics().drawImage(img, 0, 0, null);
            return newImg;
        }
    }
    

     

     

     

    展开全文
  • JAVA二维码生成

    2015-05-15 17:10:59
    JAVA二维码生成功能:可以生成带有Logo的二维码图片,采用第三方JAR包,QRCode.jar,并没有使用google的zxing。主要是我们的环境是jdk1.5的,我网上找不到1.5编译出来的zxing的jar包,好郁闷。啥也不说,直接上源码...

    JAVA二维码生成

    功能:可以生成带有Logo的二维码图片,采用第三方JAR包,QRCode.jar,并没有使用google的zxing。主要是我们的环境是jdk1.5的,我网上找不到1.5编译出来的zxing的jar包,好郁闷。

    啥也不说,直接上源码,直接可用。

    import com.swetake.util.Qrcode;
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.OutputStream;
    
    /**
     * Created by netvempive on 2015-04-20.
     */
    public class QRCode {
        /**
         * 生成二维码(QRCode)图片,直接在指定路径下生成图片
         * @param content 二维码图片的内容
         * @param imgPath 生成二维码图片完整的路径
         * @param ccbpath  二维码图片中间的logo路径
         */
        public static int createQRCode(String content, String imgPath,String ccbPath) {
            try {
                Qrcode qrcodeHandler = new Qrcode();
                qrcodeHandler.setQrcodeErrorCorrect('M');
                qrcodeHandler.setQrcodeEncodeMode('B');
                qrcodeHandler.setQrcodeVersion(7);
    
                // System.out.println(content);
                byte[] contentBytes = content.getBytes("gb2312");
                //构造一个BufferedImage对象 设置宽、高
                BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);
                Graphics2D gs = bufImg.createGraphics();
    
                gs.setBackground(Color.WHITE);
                gs.clearRect(0, 0, 140, 140);
    
                // 设定图像颜色 > BLACK
                gs.setColor(Color.BLACK);
    
                // 设置偏移量 不设置可能导致解析出错
                int pixoff = 2;
                // 输出内容 > 二维码
                if (contentBytes.length > 0 && contentBytes.length < 120) {
                    boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
                    for (int i = 0; i < codeOut.length; i++) {
                        for (int j = 0; j < codeOut.length; j++) {
                            if (codeOut[j][i]) {
                                gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
                            }
                        }
                    }
                } else {
                    System.err.println("QRCode content bytes length = "
                            + contentBytes.length + " not in [ 0,120 ]. ");
                    return -1;
                }
                Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。
                gs.drawImage(img, 55, 55, 30, 30, null);
                gs.dispose();
                bufImg.flush();
    
                // 生成二维码QRCode图片
                File imgFile = new File(imgPath);
                ImageIO.write(bufImg, "png", imgFile);
    
            }catch (Exception e){
                e.printStackTrace();
                return -100;
            }
            return 0;
        }
    
    
        /**
         * 生成二维码(QRCode)图片,以流的方式输出二维码图片
         * @param content 二维码图片的内容
         * @param output生成二维码图片完整的路径
         */
        public static int createQRCode(String content, OutputStream output) {
            try {
                String ccbPath = QRCode.class.getClassLoader().getResource("/com/common/utils/logo.jpg").toURI().getPath();
    
                Qrcode qrcodeHandler = new Qrcode();
                qrcodeHandler.setQrcodeErrorCorrect('M');
                qrcodeHandler.setQrcodeEncodeMode('B');
                qrcodeHandler.setQrcodeVersion(7);
    
                // System.out.println(content);
                byte[] contentBytes = content.getBytes("gb2312");
                //构造一个BufferedImage对象 设置宽、高
                BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);
                Graphics2D gs = bufImg.createGraphics();
    
                gs.setBackground(Color.WHITE);
                gs.clearRect(0, 0, 140, 140);
    
                // 设定图像颜色 > BLACK
                gs.setColor(Color.BLACK);
    
                // 设置偏移量 不设置可能导致解析出错
                int pixoff = 2;
                // 输出内容 > 二维码
                if (contentBytes.length > 0 && contentBytes.length < 120) {
                    boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
                    for (int i = 0; i < codeOut.length; i++) {
                        for (int j = 0; j < codeOut.length; j++) {
                            if (codeOut[j][i]) {
                                gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
                            }
                        }
                    }
                } else {
                    System.err.println("QRCode content bytes length = "
                            + contentBytes.length + " not in [ 0,120 ]. ");
                    return -1;
                }
                Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。
                gs.drawImage(img, 55, 55, 30, 30, null);
                gs.dispose();
                bufImg.flush();
    
                // 生成二维码QRCode图片
                /*File imgFile = new File(imgPath);
                ImageIO.write(bufImg, "png", imgFile);*/
                ImageIO.write(bufImg, "png", output);
    
            }catch (Exception e){
                e.printStackTrace();
                return -100;
            }
            return 0;
        }
    
        public static void main(String[] args) {
            createQRCode("1234","e:/1.jpg","e:/test.jpg");
        }
    }
    
    展开全文
  • java二维码生成Demo

    2017-02-08 20:26:49
    java二维码生成Demo
  • java二维码生成的方法

    2020-08-30 07:44:43
    主要为大家详细介绍了java二维码生成的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java二维码生成

    2014-02-16 18:29:21
    java 二维码生成器; 在使用二维码生成器时,系统默认会将生成的二维码图片放在D盘。
  • java二维码生成 带logo

    2018-04-25 18:28:35
    java二维码生成 带logo生成的。 里边有jar包,引用后直接使用,个人测试已OK并应用到系统中

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,782
精华内容 1,912
关键字:

java二维码生成

java 订阅