package com.rscode.credits.util;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream; import org.apache.commons.lang.StringUtils;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv; /**
* @author 作者 TN
* @version 创建时间:2018年10月24日
* 类说明 条形码工具类
*/
public class BarCodeUtile {
/**
* 生成文件
*
* @param msg 条形码信息
* @param barCodePath 条形码图片存储地址 +图片名
* @return 返回生成的文件
*/
public static File generateFile(String msg, String barCodePath) {
File file = new File(barCodePath);
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();
// EAN13Bean bean=new EAN13Bean();//条形码类型 // 精细度
final int dpi = 150;
// module宽度
final double moduleWidth = UnitConv.in2mm(2.0f / dpi); // 配置对象
bean.setModuleWidth(moduleWidth);
// bean.setWideFactor(3);
bean.doQuietZone(false); String format = "image/png";
try { // 输出到流
BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
// 生成条形码
System.err.println("条形码msg:"+msg);
bean.generateBarcode(canvas, msg); // 结束绘制
canvas.finish();
} catch (IOException e) {
throw new RuntimeException(e);
}
} // public static void main(String[] args) {
// String msg ="123456789123"; //一时间加ID生成图片 内容
// String imageName = msg+".png"; //图片名字
// String path = "C:\\Users\\13320\\Desktop\\WORK\\Image\\barcode\\"+imageName;
// File file = generateFile(msg, path);
// String name = file.getName();
// System.err.println(name);
// } }

BarCodeUtile的更多相关文章

随机推荐

  1. JAVA实现简单的四则运算

    GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...

  2. java第十次笔记

  3. Frist one

    2017.11.27 10:20am 今天也许只是普通的一个周一上午 但是我希望在多年以后 在我回望这些年的努力学习中 今天会是最浓墨重彩的一笔 我时常感到焦虑 对未来的焦虑 对感情的焦虑 以至于 我 ...

  4. Python列表以及列表的处理方法

    在Python中,当我们需要存储大量的数据时,可使用列表存储,列表本质是一种有序的集合 格式:列表名 = [列表元素1,列表元素2,列表元素3,...列表元素n] 如果想创建一个只有单个元素的列表,格 ...

  5. Oracle入门之表结构的管理

    建表的基本语法: create table table_name( field1 datatype, field1 datatype, field1 datatype, ... ) 注:table_n ...

  6. hdu4044

    题意:给你一颗树有n个节点,树的根节点为1,表示为敌人的基地,其他叶子节点为你的基地,你一开始有m元,给你每个节点可以建造的塔的数量和塔的价格和可以照成的伤害,每个节点至多建立一座塔.敌人的基地每次会 ...

  7. hive lock命令的使用

    1.hive锁表命令 hive> lock table t1 exclusive;锁表后不能对表进行操作 2.hive表解锁: hive> unlock table t1; 3.查看被锁的 ...

  8. linux服务器升级nginx

    1.简介 有时候nginx发布了新BUG或者添加了新的功能时,想要更新的时候服务又不能中断,这时候就要用到nginx的平滑升级了. 该脚本同样适用于添加新扩展,添加新扩展的时候只需要把更新的版本修改为 ...

  9. sklearn中树模型可视化的方法

    在机器学习的过程中,我们常常会用到树模型的方式来解决我们的问题.在工业界,我们不仅要针对某个问题利用机器学习的方法来解决问题,而且还需要能力解释其中的原理或原因.今天主要在这里记录一下树模型是怎么做可 ...

  10. Spring源码学习(6)——容器的功能扩展

    之前的随笔中借BeanFactory介绍了bean的解析和加载的完整过程,实际上,除了BeanFactory,spring还提供了一种功能更加强大的容器:ApplicationContext Appl ...