商品条形码(JBarcode)Java版(二)

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

——题记

   

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

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

  JBarcode下载地址,下载最新版本:jbarcode-0.2.8.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 : * @csdn : * @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());// 是否校验最后一位,默认是falsejbarcode13.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);}}

  

                    

一张单程车票,一颗潇洒的心。

商品条形码(JBarcode)Java版(二)

相关文章:

你感兴趣的文章:

标签云: