美文网首页Spring-BootSpring BootJava学习笔记
ZXing库生成二维码并以Base64编码保存

ZXing库生成二维码并以Base64编码保存

作者: Angeladaddy | 来源:发表于2017-06-24 01:09 被阅读3240次

    此贴作废。。。经试用,数据传输量太大,已经放弃了

    Base64 Encode

    首先说一下需求,一般的二维码都是随便保存在硬盘上某个地方。但是最近弄security,静态资源怎么也访问不到。有谁知道怎么解决吗?急~~在线等。但是二维码又不能不显示。一直想玩一下Base64编码图片,于是就试验了一下。记录下来。

    生成二维码:代码一搜大把,我就贴下我的吧,这里面有个地方要注意,我没有吧生成的qrcode保存为文件,而是直接取流使用Base64编码存进了数据库,这样再也不用担心我的二维码找不到了!

    Maven: 只需要添加这一个就行了

    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.2.1</version>
    </dependency>
    
    /**
       * 生成二维码并使用Base64编码
       * @param content
       * @throws Exception
       */
    
      public  String getBase64QRCode(String content)
        throws Exception {
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        @SuppressWarnings("rawtypes")
        Map hints = new HashMap();
        
        //设置二维码四周白色区域的大小
        hints.put(EncodeHintType.MARGIN,1);
        //设置二维码的容错性
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        //画二维码
        BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);
        BufferedImage image = toBufferedImage(bitMatrix);
        //注意此处拿到字节数据
        byte[] bytes =imageToBytes(image,"jpg");
        //Base64编码
        String base64String = Base64.getEncoder().encodeToString(bytes); 
        return base64String;
      }
    

    代码没啥好说的,注意一点Base64.getEncoder().encodeToString方法从java 1.8以上才支持。

    网页中显示的时候要加上前缀:data:image/jpg;base64,

    疗效:

    image.png

    相关文章

      网友评论

        本文标题:ZXing库生成二维码并以Base64编码保存

        本文链接:https://www.haomeiwen.com/subject/cumhcxtx.html