barcode4j条形码

barcode4j是用于生成条形码的免费工具包,在众多工具包中,它免费且生成条形码效果最佳。文中提供了之前集成该工具包的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

barcode4j是用来生成条形码的一个工具包,之前找了好些工具包,这个包是免费的,有些是要收费的,

这个包是免费里面生成的条形码效果最好的,这里提供之前集成的示例代码。

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
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 javax.imageio.ImageIO;

import org.krysalis.barcode4j.ChecksumMode;
import org.krysalis.barcode4j.HumanReadablePlacement;
import org.krysalis.barcode4j.impl.upcean.UPCABean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;

public final class BarcodeUtils
{
    public static void createUPCABarcodeImage(String text, String content, OutputStream out) throws IOException
    {
          // 1、生成UPC条形码码
        UPCABean bean = new UPCABean();
        // 1.1 设置条形码参数
        final int dpi = 250; // 分辨率
        bean.setModuleWidth(0.20); // makes the narrow bar
                                   // width exactly one pixel
        bean.doQuietZone(true);
        bean.setBarHeight(7);
        bean.setChecksumMode(ChecksumMode.CP_AUTO);
        bean.setFontSize(2.4);
        bean.setQuietZone(3); // 留白
        bean.setMsgPosition(HumanReadablePlacement.HRP_BOTTOM);
        
        // Set up the canvas provider for monochrome PNG output
        BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
        
        // 1.2 生成条形码
        bean.generateBarcode(canvas, content);
        // 2、将生成的条形码画出来
        BufferedImage barCodeImage = canvas.getBufferedImage();
        // 2.1 设置宽、高、图片类型
        BufferedImage newImage = new BufferedImage(394, 150, BufferedImage.TYPE_INT_RGB);
        // 绘图
        Graphics g2d = newImage.createGraphics();
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, newImage.getWidth(), newImage.getHeight());
        g2d.drawImage(barCodeImage,
            (newImage.getWidth() - barCodeImage.getWidth()) / 2,
            (newImage.getHeight() - barCodeImage.getHeight()) / 2 + 8,
            barCodeImage.getWidth(),
            barCodeImage.getHeight(),
            null);
        // 创建字体
        Font font = new Font("Helvetica", Font.PLAIN, 20);
        g2d.setFont(font);
        FontMetrics fm = g2d.getFontMetrics();
        g2d.setColor(Color.BLACK);
        // 绘制文本
        g2d.drawString(text, (newImage.getWidth() - fm.stringWidth(text)) / 2, 25);
        ImageIO.write(newImage, "png", out);
        canvas.finish();
    }
    

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小七会喷火

小七想要bi

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值