java barcode4j 识别条形码_java-使用barcode4j条形码生成

使用barcode4j条形码生成,

mvn管理

net.sf.barcode4j

barcode4j-light

2.0

代码实现

import lombok.extern.slf4j.Slf4j;

import org.apache.commons.lang3.StringUtils;

import org.krysalis.barcode4j.HumanReadablePlacement;

import org.krysalis.barcode4j.impl.code128.Code128Bean;

import org.krysalis.barcode4j.impl.code39.Code39Bean;

import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;

import org.krysalis.barcode4j.tools.UnitConv;

import java.awt.image.BufferedImage;

import java.io.*;

/**

* 条形码工具类

*

* @Author

* @Date

**/

@Slf4j

public class BarcodeUtil {

/**

* 生成文件

*

* @param msg

* @param path

* @return

*/

public static File generateFile(String msg, String path) {

File file = new File(path);

try {

generate(msg, new FileOutputStream(file));

} catch (FileNotFoundException e) {

throw new RuntimeException(e);

}

return file;

}

/**

* 生成字节

*

* @param msg

* @return

*/

public static byte[] generate(String msg) {

ByteArrayOutputStream ous = new ByteArrayOutputStream();

generate(msg, ous);

return ous.toByteArray();

}

/**

* 生成到流

*

* @param msg

* @param ous

*/

public static void generate(String msg, OutputStream ous) {

if (StringUtils.isEmpty(msg) || ous == null) {

return;

}

Code128Bean bean = new Code128Bean();

// 精细度

final int dpi = 150;

// module宽度

final double moduleWidth = UnitConv.in2mm(2.0f / dpi);

// 配置对象

bean.setModuleWidth(moduleWidth);

// bean.setWideFactor(3);

bean.doQuietZone(false);

//设置不显示字符

// bean.setMsgPosition(HumanReadablePlacement.HRP_NONE);

String format = "image/png";

try {

// 输出到流

BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,

BufferedImage.TYPE_BYTE_BINARY, false, 0);

// 生成条形码

bean.generateBarcode(canvas, msg);

// 结束绘制

canvas.finish();

} catch (IOException e) {

throw new RuntimeException(e);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值