Jie
发布于 2026-04-07 / 1 阅读
0
0

【条码】条形码生成

maven jar包引入

<com.google.zxing.version>3.3.3</com.google.zxing.version>
<dependency>
  <groupId>com.google.zxing</groupId>
  <artifactId>core</artifactId>
  <version>${com.google.zxing.version}</version>
</dependency>
<dependency>
  <groupId>com.google.zxing</groupId>
  <artifactId>javase</artifactId>
  <version>${com.google.zxing.version}</version>
</dependency>

生成条形码

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;

import javax.imageio.ImageIO;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Hashtable;

public class TestMain {

    private static final String CODE = "utf-8";
    private static final int BLACK = 0x000000;
    private static final int WHITE = 0xFFFFFF;
    public static void main(String[] args) {
        File file = new File("D:\\test12345.png");
        String str = "123456789";
        try {
            BufferedImage image = getBarcode(str, 300, 100);
            ImageIO.write(image, "png", file);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static BufferedImage getBarcode(String str, Integer width, Integer height) throws WriterException {
        Hashtable<EncodeHintType, String> hints = new Hashtable<>();
        hints.put(EncodeHintType.CHARACTER_SET, CODE);
        BitMatrix bitMatrix = new MultiFormatWriter().encode(str, BarcodeFormat.CODE_128, width, height, hints);
        return toBufferedImage(bitMatrix);
    }

    private static BufferedImage toBufferedImage(BitMatrix matrix) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        // 创建BufferedImage对象,RGB类型
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        Graphics2D graphics = image.createGraphics();
        // 创建一个Graphics2D对象
        Graphics2D g2d = image.createGraphics();
        // 设置颜色为透明
        Color transparentColor = new Color(255, 255, 255, 0);
        g2d.setColor(transparentColor);
        // 绘制透明区域
        g2d.fillRect(0, 0, width, height);

        // 根据BitMatrix绘制黑色条形码
        graphics.setColor(Color.BLACK);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                if (matrix.get(x, y)) {
                    graphics.fillRect(x, y, 1, 1);
                }
            }
        }
        // 关闭图形上下文
        graphics.dispose();
        return image;
    }
}


评论