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. keras-yolo3-master

    logs/000/trained_weights_final.h5 放置训练完的权重 keras-yolo3-master Keras/Tensorflow+python+yolo3训练自己的数据集 ...

  2. Archery:开源漏洞评估和管理工具

    Archery:开源漏洞评估和管理工具

  3. [Codeforces543D]Road Improvement

    Problem 刚开始每条边都是坏的,现在要选取一个点使得其他点到这个点的路径上最多只有一条坏路,问至少要修好多少条边 Solution 如果以1为根,那么是个简单的树形DP 设根从u转移到v,那么u ...

  4. JDBCUtils——DBCP

    需要导入的包: mysql-connector-java-5.1.37-bin.jar commons-dbcp-1.4.jar commons-pool-1.6.jar 需要添加/配置的配置文件: ...

  5. 2017年4月13日用VS写C程序遇到的一些问题

    在网上找到一篇展示计算机浮点数格式的文章,且有C代码如下: #include <stdio.h> #include <stdlib.h> #include <string ...

  6. JAVA中接口与抛出异常的相关知识

    1.接口概念:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只 ...

  7. Git 转载

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  8. java解析HTML之神器------Jsoup

    背景:公司项目要对接第三方商城的商品到自己的商城来卖,商品详情给了个链接url,因为对方的商品详情有他们的物流说明,售后信息,所以要求去掉这部分的代码 @Test public void getIte ...

  9. Unable to correct problems, you have held broken packages

    Use aptitude instead of apt-get. It is more intelligent. It not only will handle downgrading conflic ...

  10. Django中STATIC_URL、STATIC_ROOT、STATICFILES_DIRS 的区别关系

    首先,我们配置静态文件,要在setting.py里面加入如下几行代码: settings.py # the settings above # STATIC SETTINGS STATIC_URL = ...