博客
关于我
barcode4j 条形码生成
阅读量:130 次
发布时间:2019-02-26

本文共 2579 字,大约阅读时间需要 8 分钟。

barcode4j 条形码生成工具类实现

选择轻量级版本的原因

为了提高开发效率,我们在项目中选择了轻量级的barcode4j-light版本作为条形码生成工具。相较于标准版本,这个轻量级版本的依赖包更小,安装和运行效率更高。

在项目中添加依赖项

在项目的pom.xml文件中,需要添加以下依赖项:

net.sf.barcode4j
barcode4j-light
2.0

这一选择主要基于以下考虑:

  • 轻量级版本的依赖包体积较小,不会对项目性能产生显著影响。
  • 标准版本的依赖包包含了许多冗余功能,这些功能对于本次项目的需求并不是必不可少的。

BarcodeUtil 工具类实现

下面我们来看一下实现的核心代码:

import java.awt.image.BufferedImage;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import org.apache.commons.lang.StringUtils;import org.krysalis.barcode4j.impl.code39.Code39Bean;import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;import org.krysalis.barcode4j.tools.UnitConv;public class BarcodeUtil {    public static File generateFile(String msg, String path) {        File file = new File(path);        try {            generate(msg, new FileOutputStream(file));        } catch (FileNotFoundException e) {            throw new RuntimeException(e);        }        return file;    }    public static void generate(String msg, OutputStream ous) {        if (StringUtils.isEmpty(msg) || ous == null) {            return;        }        Code39Bean bean = new Code39Bean();        // 设置模块宽度        final int dpi = 150;        final double moduleWidth = UnitConv.in2mm(1.0f / dpi);        bean.setModuleWidth(moduleWidth);        bean.setWideFactor(3);        bean.doQuietZone(false);        String format = "image/png";        try {            BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,                    BufferedImage.TYPE_BYTE_BINARY, false, 0);            bean.generateBarcode(canvas, msg);            canvas.finish();        } catch (IOException e) {            throw new RuntimeException(e);        }    }    public static void main(String[] args) {        String msg = "liunnDjj";        String path = "D:/liunnDjj.png";        generateFile(msg, path);    }}

代码解释

  • generateFile 方法

    该方法负责根据输入的消息内容和保存路径生成相应的条形码图片文件。

    • 首先,创建目标文件对象。
    • 然后调用generate方法生成条形码内容,并将结果输出到指定路径。
    • 如果出现文件未找到异常,会抛出RuntimeException异常。
  • generate 方法

    该方法负责将消息内容生成条形码图片并输出到指定的输出流。

    • 首先检查消息内容是否为空或输出流是否为空,如果是则直接返回。
    • 创建Code39Bean对象,用于生成条形码。
    • 设置条形码的模块宽度和宽度因子。
    • 配置输出格式为PNG图片。
    • 创建BitmapCanvasProvider对象,用于生成条形码图片。
    • 调用generateBarcode方法生成条形码内容并绘制到图片中。
    • 最后,调用finish方法结束绘制并释放资源。
  • main 方法

    • 调用generateFile方法生成条形码图片,并将生成的图片文件路径输出到标准输出。
    • 主函数主要用于验证工具类的使用效果。
  • 工具类的实际应用

    通过上述工具类,可以按照以下步骤生成条形码:

  • 创建一个消息内容字符串。
  • 指定一个保存路径。
  • 调用generateFile方法生成条形码图片。
  • 运行主函数后,会在D盘生成名为liunnDjj.png的条形码图片文件。

    总结

    通过本文的实现,可以轻松地对任意字符串内容生成条形码图片。工具类的设计简洁高效,适合用于快速生成条形码验证或标识。

    转载地址:http://idof.baihongyu.com/

    你可能感兴趣的文章
    php实现下载文件方法
    查看>>
    php实现单链表
    查看>>
    php实现图片背景换色功能
    查看>>
    php实现多个一维数组对应合并成二维数组
    查看>>
    php实现多关键字查找方法
    查看>>
    PHP实现微信公众号H5支付
    查看>>
    PHP实现微信公众号网页授权
    查看>>
    PHP实现微信小程序推送消息至公众号
    查看>>
    php实现根据身份证获取年龄
    查看>>
    PHP实现的MongoDB数据增删改查
    查看>>
    php实现短信验证功能
    查看>>
    RabbitMQ连接报错(1)—— None of the specified endpoints were reachable
    查看>>
    php实现逆转数组
    查看>>
    PHP实现通过geoip获取IP地理信息
    查看>>
    PHP实现页面静态化、纯静态化及伪静态化
    查看>>
    php容许ajax跨域,PHP设置允许ajax跨域请求的两种常见方法
    查看>>
    RabbitMQ进程结构分析与性能调优
    查看>>
    PHP对接百度地图
    查看>>
    PHP对表单提交特殊字符的过滤和处理
    查看>>
    php对象引用和析构函数的关系
    查看>>