Java 魔法:轻松生成条形码

server/2025/2/11 11:08:22/

朋友!在商业、物流、库存管理等众多领域,条形码都有着广泛的应用。在 Java 里,我们同样可以借助一些库来实现条形码的生成功能,其中 ZXing(Zebra Crossing)是一个强大且常用的选择。下面就详细说说如何使用 ZXing 库来生成条形码。

1. 引入依赖

如果你使用的是 Maven 项目,在 pom.xml 里添加以下依赖:

 
<dependencies><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.4.1</version></dependency>
</dependencies>

2. 生成条形码的 Java 代码示例

 
java">import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.Code128Writer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;public class BarcodeGenerator {private static final String BARCODE_IMAGE_PATH = "./MyBarcode.png";public static void main(String[] args) {try {// 要生成条形码的内容String barcodeContent = "1234567890";// 调用生成条形码的方法generateBarcodeImage(barcodeContent, 300, 100, BARCODE_IMAGE_PATH);System.out.println("条形码生成成功,保存路径:" + BARCODE_IMAGE_PATH);} catch (WriterException | IOException e) {System.out.println("生成条形码时出错:" + e.getMessage());e.printStackTrace();}}/*** 生成条形码图片的方法* @param text 条形码要包含的文本内容* @param width 条形码图片的宽度* @param height 条形码图片的高度* @param filePath 生成的条形码图片的保存路径* @throws WriterException 写入异常* @throws IOException 输入输出异常*/public static void generateBarcodeImage(String text, int width, int height, String filePath) throws WriterException, IOException {// 创建 Code128Writer 实例,用于生成条形码矩阵Code128Writer barcodeWriter = new Code128Writer();// 设置条形码的纠错级别和字符编码Map<EncodeHintType, Object> hints = new HashMap<>();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 生成条形码的位矩阵BitMatrix bitMatrix = barcodeWriter.encode(text, BarcodeFormat.CODE_128, width, height, hints);// 获取文件路径Path path = FileSystems.getDefault().getPath(filePath);// 将位矩阵转换为图片并保存到指定路径MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);}
}

3. 代码解释

依赖库

  • com.google.zxing.core:ZXing 库的核心部分,包含了生成条形码所需的基本类和方法。

  • com.google.zxing.j2se:ZXing 库针对 Java SE 环境的扩展,提供了将条形码矩阵转换为图片的工具类。

主要方法

  • Code128Writer:用于生成 Code 128 类型的条形码的位矩阵。Code 128 是一种广泛使用的条形码类型,能够编码所有 128 个 ASCII 字符。

  • BitMatrix:表示条形码的位矩阵,包含了条形码的黑白像素信息。

  • MatrixToImageWriter:将位矩阵转换为图片并保存到指定路径。

生成步骤

  1. 设置条形码内容:定义要生成条形码的文本内容,例如产品编号、序列号等。

  2. 设置字符编码:通过 EncodeHintType 可以设置条形码的字符编码,这里使用 "UTF-8"

  3. 生成位矩阵:调用 Code128Writerencode 方法生成条形码的位矩阵。

  4. 保存为图片:使用 MatrixToImageWriterwriteToPath 方法将位矩阵转换为图片并保存到指定路径。

4. 注意事项

  • 确保你已经正确引入了 ZXing 库的依赖。

  • 生成的条形码图片格式可以根据需要修改,例如将 "PNG" 改为 "JPEG"

  • 可以根据实际需求调整条形码的宽度、高度。如果要生成其他类型的条形码,只需将 BarcodeFormat.CODE_128 替换为相应的条形码格式,如 BarcodeFormat.EAN_13 等。

通过以上步骤,你就可以使用 Java 轻松生成条形码啦!赶紧动手试试,让你的程序也能创造出实用的条形码吧!


http://www.ppmy.cn/server/166735.html

相关文章

PL/SQL块结构

目录 一、声明部分&#xff08;declare&#xff09; 二、执行部分&#xff08;begin end&#xff09; 三、异常处理部分 &#xff08;Exception end&#xff09; 四、代码示例 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;是Oracle数据库…

Qt QSettings用法

一、概述 QSettings类是Qt框架中的一个重要类&#xff0c;它主要用于存储和访问应用程序的设置和配置。 二、QSettings的构造方式 1、基于组织名和程序名的构造方式&#xff08;主要用于Windows注册表&#xff09; 1、explicit QSettings(const QString &organization,c…

c++ haru生成pdf输出饼图

#define PI 3.14159265358979323846 // 绘制饼图的函数 void draw_pie_chart(HPDF_Doc pdf, HPDF_Page page, float *data, int data_count, float x, float y, float radius) { float total 0; int i; // 计算数据总和 for (i 0; i < data_count; i) { tot…

java毕业设计之建设路小学芙童币和芙童印章管理系统源码(ssm+mysql)

项目简介 建设路小学芙童币和芙童印章管理系统实现了以下功能&#xff1a; 建设路小学芙童币和芙童印章管理系统的主要使用者管理员具有系统最高权限&#xff0c;通过授权登录后进行管理&#xff0c;包括修改个人密码、用户信息的管理。用户包括学生用户、老师用户、管理员用…

【JavaEE进阶】Spring IoC

目录​​​​​​​ &#x1f334;序言 &#x1f384;Spring是什么&#xff1f; &#x1f6a9;什么是容器&#xff1f; &#x1f6a9;什么是IoC&#xff1f; &#x1f333;IoC介绍 &#x1f6a9;传统程序开发 &#x1f6a9;问题分析 &#x1f6a9;解决方案 &#x1f6…

DeepSeek 关联 Word 使用教程:解锁办公新效率

在当今数字化办公时代&#xff0c;将强大的人工智能模型与常用办公软件相结合&#xff0c;能显著提升工作效率。DeepSeek 作为一款先进的人工智能工具&#xff0c;若能与广泛使用的办公软件 Word 实现关联&#xff0c;可在文档撰写、编辑、内容优化等诸多方面为用户带来极大便利…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…

优惠券平台(一):基于责任链模式创建优惠券模板

前景概要 系统的主要实现是优惠券的相关业务&#xff0c;所以对于用户管理的实现我们简单用拦截器在触发接口前创建一个单一用户。 // 用户属于非核心功能&#xff0c;这里先通过模拟的形式代替。后续如果需要后管展示&#xff0c;会重构该代码 UserInfoDTO userInfoDTO new…