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();
}
}