java如何生成条形码
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倍。
对于商业应用,建议添加校验位以提高数据可靠性,多数库会自动处理校验位计算。
两种库各有优势:ZXing支持更多格式且更新更活跃,Barbecue的API更简洁但维护较少。根据项目需求选择合适的工具。







