当前位置: 首页 > 面试题库 >

Java怎么生成二维码以Base64串存DB并在前端显示?

邵凯定
2023-05-05


package com.pay.utils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import javax.swing.filechooser.FileSystemView;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
public class QrCodeUtil {
    public static void main(String[] args) {
        String url = "http://www.baidu.com";
        String path = FileSystemView.getFileSystemView().getHomeDirectory() +             File.separator + "testQrcode";
        String fileName = "temp.jpg";
        createQrCode(url, path, fileName);
    }
    public static String createQrCode(String url) {
        try {
            Map<EncodeHintType, String> hints = new HashMap<>();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 400, 400, hints);
// 二维码图片下载至本地
//            File file = new File(path, fileName);
//            if (file.exists() || ((file.getParentFile().exists() || file.getParentFile().mkdirs()) && file.createNewFile())) {
//                writeToFile(bitMatrix, "jpg", file);
//                System.out.println("搞定:" + file);
//            }
            // 1、读取文件转换为字节数组
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            BufferedImage image = toBufferedImage(bitMatrix);
            //转换成png格式的IO流
            ImageIO.write(image, "png", out);
            byte[] bytes = out.toByteArray();
            // 2、将字节数组转为二进制
            BASE64Encoder encoder = new BASE64Encoder();
            String binary = encoder.encodeBuffer(bytes).trim();
            System.out.println(binary);
            return binary;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
        BufferedImage image = toBufferedImage(matrix);
        if (!ImageIO.write(image, format, file)) {
            throw new IOException("Could not write an image of format " + format + " to " + file);
        }
    }
    static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {
        BufferedImage image = toBufferedImage(matrix);
        if (!ImageIO.write(image, format, stream)) {
            throw new IOException("Could not write an image of format " + format);
        }
    }
    private static final int BLACK = 0xFF000000;
    private static final int WHITE = 0xFFFFFFFF;
    private static BufferedImage toBufferedImage(BitMatrix matrix) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        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;
    }
}


pom引入:

        <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.0</version>
        </dependency>


前端页面显示:

<img src="https://imgs.xnip.cn/2022010701572936051.png' + value + '" width="70px" height="70px"></img>


 

 类似资料:
  • 本文向大家介绍java 生成二维码实例,包括了java 生成二维码实例的使用技巧和注意事项,需要的朋友参考一下 最近有点时间想学点东西,想做个简单的系统,现在登录的时候使用扫描二维码获取验证码登录,于是就有了下面的一些代码 首先要导入pom依赖 这个是goole提供的一些包 第一个类是goole提供帮主类 画出图片 生成图片工具类 controller 二维码示例 以上就是java 生成二维码实例

  • 本文向大家介绍java二维码生成的方法,包括了java二维码生成的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java二维码的实现代码,供大家参考,具体内容如下 这次用到的jar包是zxing,没有用到core的jar包 先导入zxing.jar包 生成二维码 解析二维码 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • jquery.qrcode.min.js在index中引用,但是在组件中无法使用是为什么?

  • 及策微信小程序二维码生成器,是一个根据小程序相关数据生成二维码的工具。在进行参数设置后,通过用户在不同场景中扫描该场景二维码激活小程序,从而准确帮您获取小程序的渠道推广数据,用户来源。 生成二维码 名称:为二维码定义一个独立的,方便识别的名称; 类型:选择生成小程序的类型; 页面路径:通过扫描将生成的二维码所访问的页面路径。也就是说你可以将任意页面生成为二维码,供用户扫描后直接进入; 参数设置:

  • 1、renderQrCode 用法 renderQrCode 生成二维码极其简单方便,常见用法如下: // 二维码携带的数据 String data = "weixin://wxpay/bizpayurl?appid=xx&mch_id=xx......"; // 渲染二维码图片,长度与宽度为 200 像素 renderQrCode(data, 200, 200); 上例代码中的 data 为该

  • 本文向大家介绍java生成彩色附logo二维码,包括了java生成彩色附logo二维码的使用技巧和注意事项,需要的朋友参考一下 java生成二维码有很多开发的jar包如zxing是谷歌开发的,这里的话我使用zxing的开发包来实现的。我们在很多项目中需要动态生成二维码,来提供给用户,这样让更多人能够很好的通过二维码来体验自己的应用。 下面贴出代码,已经测试通过,大家可以直接复制代码使用: 最后实现