Java 生成在线二维码 以Base64返回前端、或者写入到本地磁盘

首先添加版本Maven依赖

<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency>

这里依赖的jar包主要是Google 的zxing 进行二维码的生成

代码

QRCodeWriter qrCodeWriter = new QRCodeWriter();

BitMatrix bitMatrix = qrCodeWriter.encode("我是", BarcodeFormat.QR_CODE, 600, 600);

ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);

Base64.Encoder encoder = Base64.getEncoder();

String text = encoder.encodeToString(outputStream.toByteArray()); System.out.println("data:image/png;base64"+text);

说明:需要在二维码里面展现的内容就是字符串622921

参数600*600 表示的就是生成后二维码的宽高,单位px 像素

这里我们使用的是Java自带Base64工具类进行生成的base64编码

生成后的base64如下所示

 View Code

注意:这里编码后的base64字符串没有带有前端img标签解析时候的格式字符,需要在字符串前拼接:data:image/png;base64,

方可正常显示!!

检验


在线验证:http://imgbase64.duoshitong.com/

效果:微信扫码后结果就是:622921

本地生成方案


 

只需要修改部分关键代码即可实现,通过字节流的方式进行写入到磁盘,这里使用字节流直接操作的是文件对象,可以不用关闭流。

复制代码

        File file = new File("H:/test/456.png");

        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream outputStream = new FileOutputStream(file);

        MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);

复制代码

猜你喜欢

转载自blog.csdn.net/qq_37557563/article/details/106553453