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扫一扫既可以得到以下结果: