java生成base64条形码

1、引入需要的jar包

本次使用的Google提供的MatrixToImageWriter类,首先在pom.xml文件中引入。

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

2、编写一个简单的工具类

向工具类中传入想要的条形码“编码”、“宽度”、“高度”,工具类产生条形码图片后,将图片转成base64码返回给前端。

package web.com;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
/**
 * @author cxt
 * @date 2020/8/27
 */
public class BarCode {

    /**
     * 给前端产生一个条形码
     *
     * @param number 编码
     * @param width  宽度
     * @param height 高度
     */
    public static String getCode(String number, Integer width, Integer height) {
        // 生成条形码
        BufferedImage image = getBarCode(number, width, height);
        // 使用流的方式
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        try {
            ImageIO.write(image, "png", out);
        } catch (Exception e) {
            // log.error("generate code error! error message:{}", "出现问题!");
            e.printStackTrace();
        }
        // 将流转成数组
        byte[] bytes = out.toByteArray();
        BASE64Encoder encoder = new BASE64Encoder();
        // 把生成的编码返回去
        return "data:image/png;base64," + encoder.encodeBuffer(bytes).trim();
    }

    /**
     * 产生条形码的方法
     *
     * @param number 编码
     * @param width  宽度
     * @param height 高度
     */
    public static BufferedImage getBarCode(String number, Integer width, Integer height) {
        try {
            BitMatrix bitMatrix = new MultiFormatWriter().encode(number, BarcodeFormat.CODE_128, width, height);
            return MatrixToImageWriter.toBufferedImage(bitMatrix);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 调用测试
     */
    public static void main(String[] args) {
        String code = getCode("1120220202", 50, 50);
        System.out.println(code);
    }
}

3、结果

在这里插入图片描述将产生的data:image/png;base64,……放到<img 标签中的“ src = ‘data:image/png;base64,……’ ” 结果如下。
在这里插入图片描述
使用QQ扫一扫既可以得到以下结果:
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,您可以使用Java代码生成条形码并将其转换为base64编码。Java中的ZXing库可以用于生成多种类型的条形码,并且Java中的Base64类可以用于将图像转换为base64编码。以下是一个示例代码片段: ```java import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Base64; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.oned.Code39Writer; import com.google.zxing.client.j2se.MatrixToImageWriter; public class BarcodeGenerator { public static String generateBarcode(String data) throws WriterException, IOException { // 生成 Code39 条形码 Code39Writer writer = new Code39Writer(); BitMatrix bitMatrix = writer.encode(data, BarcodeFormat.CODE_39, 300, 50); // 将条形码转换为字节数组 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream); byte[] byteArray = outputStream.toByteArray(); // 将字节数组转换为base64编码 String base64Image = Base64.getEncoder().encodeToString(byteArray); return base64Image; } } ``` 这个类包含一个名为`generateBarcode`的静态方法,它接受一个字符串作为参数并返回一个字符串,该字符串是生成的Code39条形码base64编码。您可以使用以下代码调用该方法: ```java String data = "123456789"; String barcodeBase64 = BarcodeGenerator.generateBarcode(data); System.out.println(barcodeBase64); ``` 请注意,您需要在项目中添加ZXing库的依赖项。如果您使用的是Maven,则可以将以下代码添加到您的pom.xml文件中: ```xml <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.3</version> </dependency> ``` 如果您使用的是Gradle,则可以将以下代码添加到您的build.gradle文件中: ```gradle dependencies { implementation 'com.google.zxing:core:3.3.3' implementation 'com.google.zxing:javase:3.3.3' } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值