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);

复制代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值