①背景
目前商品条形码的应用场景已经遍布各类互联网平台,通常是将产品/商品的唯一编号存储于条形码中以做扫码识别。
而用于生产环境的条形码技术仍然存在,条码技术在现在的应用非常广泛,几乎所有的商品包装上都会印有条形码。
②环境准备
JBarcode下载地址,下载最新版本:jbarcode-0.2.8.jar,我基本上都是去官网去下载一些东西,一些你不知道的答案,在网络上基本上都有,
所以还是建议大家都多去官网浏览。
③效果
④代码示例
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jbarcode.JBarcode;
import org.jbarcode.encode.Code39Encoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.encode.InvalidAtributeException;
import org.jbarcode.paint.BaseLineTextPainter;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.WideRatioCodedPainter;
import org.jbarcode.util.ImageUtil;
import org.junit.Test;
public classTestCode{
/*
* BarcodeEncoder 生成条形码规则(EAN12 欧洲商品条形码)
* BarcodePainter 绘制条形码的对象
* TextPainter 绘制条形码的文本对象(也就是条形码下边那个名字)
* */
@Test
publicvoidm01() throwsInvalidAtributeException, IOException{
JBarcode jBarcode=new JBarcode(EAN13Encoder.getInstance(),
WideRatioCodedPainter.getInstance(),EAN13TextPainter.getInstance());
jBarcode.setEncoder(Code39Encoder.getInstance());
jBarcode.setPainter(WideRatioCodedPainter.getInstance());
jBarcode.setTextPainter(BaseLineTextPainter.getInstance());
jBarcode.setShowCheckDigit(false); //是否校验码,EAN13可以不用校验。
//java中的BufferedImage来存储图像,最后把图像写入到磁盘中。
String code="01010221";
BufferedImage bufferedImage=jBarcode.createBarcode(code);
//设置图片的后缀名如:jpg,png,jpeg等、
//System.currentTimeMillis()产生一个毫秒,从1970年1月1日0时起的毫秒数
saveToPNG(bufferedImage,""+System.currentTimeMillis(),"code","D:/");
}
/* 将条形码制作成一张图片
* bufferedImage 做好条形码的图片对象
* fileName 图片的名称
* dirName 图片存储的文件夹的名称
* path 图片存储的磁盘路径
* */
privatevoidsaveToPNG(BufferedImage bufferedImage,String fileName,
String dirName,String path) throws IOException{
saveToFile(bufferedImage, fileName, "png", path+dirName);
}
privatevoidsaveToFile(BufferedImage bufferedImage,String fileName,
String suffix,String path) throws IOException{
File file=new File(path);
if(!file.exists()){
file.mkdirs();
}
//输入条形码
FileOutputStream fileOutputStream=new FileOutputStream(path+"/"+fileName+"."+suffix);
ImageUtil.encodeAndWrite(bufferedImage, suffix, fileOutputStream);
fileOutputStream.close();
}
}