博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
商品条形码(JBarcode)Java版(二)
阅读量:6280 次
发布时间:2019-06-22

本文共 4377 字,大约阅读时间需要 14 分钟。

 

  下午开了一个下午的会议,其实开会我听不进去,因为今天妖都特别冷,下班在公司等待小媳妇一个钟头,然后带着她去吃饭,吃完饭回到家。她做运动,我就开始慢慢整理我自己的小博客。

——题记

   

  先说一下,写这篇文章的目的,是为了完善上一篇文章大家的疑问,虽然是一个简单的功能,但是上一次只是简单的做出来一个功能,而这一次是延续上一次功能的基础上面,做一些优化工作,给自己生活增添一些记录,提出来供大家学习,也是自己学习的一种方式。每次学完新的东西,就要梳理,也慢慢成为生活中的一部分,感觉这是一种的自我习惯。

 

  这里用到一些Jar包,我就不多说了,下载地址满天飞

  下载地址,下载最新版本:,我基本上都是去官网去下载一些东西,一些你不知道的答案,在网络上基本上都有,所以还是建议大家都多去官网浏览。

 

  

  下面开始展示成果代码,你自己下载这个Utils工具类就可以应用在自己的项目中。(备注:根据自己需求设定相应的参数即可

  

 

  

 

package com.kinya.liuyc.barcode;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.text.SimpleDateFormat;import java.util.Date;import org.jbarcode.JBarcode;import org.jbarcode.encode.EAN13Encoder;import org.jbarcode.encode.InvalidAtributeException;import org.jbarcode.paint.EAN13TextPainter;import org.jbarcode.paint.WidthCodedPainter;import org.jbarcode.util.ImageUtil;/** * 简易生成条形码(EN-13码) *  * @============================================= *  * @author : Liuyc * @create : 2015-4-8 下午06:19:21 * @update : * @bolg : http://www.cnblogs.com/yuchuan/ * @csdn : http://blog.csdn.net/l_lycos * @E-mail : 763999883@qq.com * @desc : *  * @============================================= */public class TestBarcode {	/**	 * 生成商品条形码	 * 	 * @param filePath	 *            商品条形码图片存放路径:C://barcode//images//	 * 	 * @param barCode	 *            商品条形码:13位	 * @param imgFormat	 *            图片格式	 *            	 * @return 图片存放路径+图片名称+图片文件类型	 */	public static String createBarCode(String savePath, String jbarCode,			String imgFormat) {		// 校验全部省略……		// if(StringUtils.isNotEmpty(savePath)){		//		// return null;		// }		// if(StringUtils.isNotEmpty(jbarCode)){		// return null;		// }		// if(StringUtils.isNotEmpty		// (imgFormat)){		// return null;		// }		// if( jbarCode.length()!=13){		// return null;		// }		try {			BufferedImage bi = null;			int len = jbarCode.length();			// 实例化JBarcode			// 这里三个参数,必要填写			JBarcode jbarcode13 = new JBarcode(EAN13Encoder.getInstance(),					WidthCodedPainter.getInstance(),					EAN13TextPainter.getInstance());			// 获取到前12位			String barCode = jbarCode.substring(0, len - 1);			// 获取到校验位			String code = jbarCode.substring(len - 1, len);			String checkCode = jbarcode13.calcCheckSum(barCode);			if (!code.equals(checkCode)) {				return "EN-13 条形码最后一位校验码 不对,应该是: " + checkCode;			}			/*			 * 最重要的是这里的设置,如果明白了这里的设置就没有问题 如果是默认设置,			 * 那么设置就是生成一般的条形码 如果不是默认			 * 设置,那么就可以根据自己需要设置			 */			// 尺寸,面积,大小			jbarcode13.setXDimension(Double.valueOf(0.8).doubleValue());			// 条形码高度			jbarcode13.setBarHeight(Double.valueOf(30).doubleValue());			// 宽度率			jbarcode13.setWideRatio(Double.valueOf(20).doubleValue());			// 是否校验最后一位,默认是false			jbarcode13.setShowCheckDigit(true);			// 生成二维码			bi = jbarcode13.createBarcode(barCode);			// 定义图片名称			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");			String imgName = sdf.format(new Date()) + "_" + jbarCode;			// 保存二维码图片			FileOutputStream fileOutputStream = null;			String imgPath = savePath + imgName + "." + imgFormat;			try {				try {					savePath = URLDecoder.decode(savePath, "UTF-8");				} catch (UnsupportedEncodingException uee) {					uee.printStackTrace();					savePath = "C://barcode//images//";				}				File dirFile = new File(savePath);				if (!dirFile.exists()) {					dirFile.mkdirs();				}				fileOutputStream = new FileOutputStream(imgPath);			} catch (Exception e) {				e.printStackTrace();				return null;			}			ImageUtil.encodeAndWrite(bi, imgFormat, fileOutputStream, 96, 96);			fileOutputStream.close();			// 返回路径			return imgPath;		} catch (Exception e) {			e.printStackTrace();			return null;		}	}	/**	 * @param args	 * @throws InvalidAtributeException	 */	public static void main(String[] args) throws InvalidAtributeException {		String path = TestBarcode.createBarCode("D://test//", "6937748304340",				ImageUtil.JPEG);		System.out.println(path);	}}

 

                    

  通过这一次的优化,让我知道源码的重要性,想要了解一些深入的东西,你需要了解到内部,用学习知识来武装自己,菜鸟学习,大鸟勿喷,只是记录而已,顺便写给那些不爱动脑筋的孩子们,如果您喜欢我这种方式,请点击右下角的 推荐,谢谢。!!!  

  睡了,小媳妇的运动也做完了。。。   

 

  附:上一篇链接地址:

 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

原文链接:http://www.cnblogs.com/yuchuan/p/JBarcode2.html

如果您觉得本文不错,不妨推荐一下,让更多的读者得到收获。

如果您有什么其他见解,不妨留言,咱大伙一起讨论一下。三人行,必有我师。互相学习,互相进步!
如果本文有什么不妥或者错误的地方,请您一定要在评论中指出,以免误人子弟!非常感谢您的不吝赐教!

推广:

如何加入我们:QQ群          微信订阅号:

           

 

 

 

  

转载于:https://www.cnblogs.com/yuchuan/p/JBarcode2.html

你可能感兴趣的文章
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
java 用反射简单应用,将Object简单转换成map
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>