版本:aliyun-sdk-oss-2.7 zxing-core
public static void encode128(String contents,String path) {
//配置条码参数
Map<EncodeHintType,Object> hints = new HashMap<>();
//设置条码两边空白边距为0,默认为10,如果宽度不是条码自动生成宽度的倍数则MARGIN无效
hints.put(EncodeHintType.MARGIN, 0);
//为了无边距,需设置宽度为条码自动生成规则的宽度
int width = new Code128Writer().encode(contents).length;
//前端可控制高度,不影响识别
int height = 70;
//条码放大倍数
int codeMultiples = 1;
//获取条码内容的宽,不含两边距,当EncodeHintType.MARGIN为0时即为条码宽度
int codeWidth = width * codeMultiples;
/* ZXing 条码边距及总宽度-默认计算规则
codeWidth: 自定义的条码宽度
fullWidth: 条码根据编码内容自动生成编码数组长度(new Code128Writer().encode(contents).length)+边距MARGIN
outputWidth: codeWidth 与 fullWidth 的最大值
//放大倍数(取整)
int multiple = outputWidth / fullWidth;
//边距
int leftPadding = (outputWidth - (inputWidth * multiple)) / 2;
生成条码长度为: outputWidth + 2 * leftPadding
*/
try {
// 图像数据转换,使用了矩阵转换 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
BarcodeFormat.CODE_128, codeWidth, height, hints);
MatrixToImageWriter.writeToStream(bitMatrix, "jpg", new FileOutputStream(new File(path)));
// MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream("d:/code39.png"));
} catch (Exception e) {
e.printStackTrace();
}
}