package com.hx.util; 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; public class BarCodeUtil { /** * 给前端产生一个条形码 * * @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; } }