当前位置:首页 > Java

java如何生成条形码

2026-03-04 02:44:28Java

Java生成条形码的方法

使用ZXing库生成条形码

ZXing(Zebra Crossing)是一个开源的条形码处理库,支持多种条形码格式(如Code 128、QR Code等)。以下是生成Code 128条形码的示例代码:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.Code128Writer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class BarcodeGenerator {
    public static void generateBarcode(String data, String filePath, int width, int height) throws WriterException, IOException {
        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.MARGIN, 1);

        Code128Writer writer = new Code128Writer();
        BitMatrix bitMatrix = writer.encode(data, BarcodeFormat.CODE_128, width, height, hints);

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x, y, bitMatrix.get(x, y) ? 0x000000 : 0xFFFFFF);
            }
        }

        ImageIO.write(image, "png", new File(filePath));
    }

    public static void main(String[] args) {
        try {
            generateBarcode("123456789", "barcode.png", 300, 100);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Barbecue库生成条形码

Barbecue是另一个Java条形码生成库,使用更简单:

import net.sourceforge.barbecue.Barcode;
import net.sourceforge.barbecue.BarcodeFactory;
import net.sourceforge.barbecue.BarcodeImageHandler;
import java.io.File;

public class BarcodeGenerator {
    public static void main(String[] args) throws Exception {
        Barcode barcode = BarcodeFactory.createCode128("123456789");
        barcode.setBarWidth(2);
        barcode.setBarHeight(50);

        File imgFile = new File("barcode.png");
        BarcodeImageHandler.savePNG(barcode, imgFile);
    }
}

生成条形码的注意事项

条形码内容应符合目标格式规范。例如Code 128支持ASCII字符,但某些特殊字符可能需要转义。

生成的图片分辨率需足够高以确保扫描设备可识别,通常宽度至少为条形码宽度的1.5倍。

对于商业应用,建议添加校验位以提高数据可靠性,多数库会自动处理校验位计算。

java如何生成条形码

两种库各有优势:ZXing支持更多格式且更新更活跃,Barbecue的API更简洁但维护较少。根据项目需求选择合适的工具。

标签: 条形码java
分享给朋友:

相关文章

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

如何成为java架构师

如何成为java架构师

掌握扎实的Java基础 深入理解Java核心知识,包括多线程、集合框架、JVM原理、设计模式等。熟悉Java生态中的常用框架如Spring、MyBatis、Hibernate等,并能分析其源码实现。…

java如何连接mysql数据库

java如何连接mysql数据库

连接 MySQL 数据库的步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,可以在 pom.xml 中添加以下依赖: <dependency…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

java面试官如何面试别人

java面试官如何面试别人

考察基础知识 从Java核心概念入手,包括面向对象特性(封装、继承、多态)、集合框架(ArrayList vs LinkedList、HashMap实现原理)、异常处理机制、多线程(线程池、锁机制)等…