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

——题记

   

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

  这里用到一些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 : 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());// 是否校验最后一位,默认是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)

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

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

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

推广:

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

           

  

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

商品条形码(JBarcode)Java版(二)相关推荐

  1. 【算法面试必刷JAVA版二】链表内指定区间反转

    盲目刷题,浪费大量时间,博主这里推荐一个面试必刷算法题库,刷完足够面试了.传送门:牛客网面试必刷TOP101

  2. 阿衰java免费版_flutter plugin之路:flutter与原生交互传值OC/java版(一)

    说在前头:flutter虽然很牛掰,但是目前很多功能或者插件的实现其实还是需要通过原生来实现,然后通过flutter和原生的交互传值实现数据的交换. -本篇是flutter调用原生方法,然后原生执行完 ...

  3. leetcode 530. 二叉搜索树的最小绝对差(Java版)

    题目 https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 题解 中序遍历法. 本题要求二叉搜索树任意两节点差的绝对 ...

  4. leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)

    题目 原题地址:leetcode 235. 二叉搜索树的最近公共祖先 说明: 所有节点的值都是唯一的. p.q 为不同节点且均存在于给定的二叉搜索树中. 题解 关于 树形dp 套路,可以参考我的另一篇 ...

  5. java版+支付宝支付和微信支付(二)(含源码)

    微信支付 上一篇文章介绍了支付宝支付的介入,今天来填坑,说一下微信支付的具体方法. 微信支付我用的是扫码支付,具体开通方法就不赘述,具体可以看官方文档,我用的是模式二,具体流程官方说的很清楚,很遗憾的 ...

  6. Android简易音乐重构MVVM Java版-新增推荐菜单及侧边栏展示(十二)

    Android简易音乐重构MVVM Java版-新增推荐菜单及侧边栏展示(十二) 关于 效果图 添加侧边栏 添加推荐歌单 新增RecommendAdapter适配器 修改DiscoverFragmen ...

  7. 仰邦LED(BX-Y08)二次开发的java版流程梳理记录

    仰邦LED-bx_y08二次开发的java版流程梳理记录 首次开发的项目是一个停车场主要显示剩余多少车辆 遇到很多难题;主要还要搞清楚二次开发LED的发送流程,在这记录下 //初始化API环境 仅一次 ...

  8. 短信猫二次开发(java版)

    短信猫二次开发(java版) 短信猫 短信猫用于批量收/发短信或其它SIM卡服务. 短信猫与PC通过GSM无线网络交互. 交互过程可以分为三个层次: 1.物理层,即无线网络通信. 2.指令层,短信猫支 ...

  9. 分享6:绘制二维码/二维条码(java版)

    最近客户抽筋了,不想要我们现有的二维码,转而采用二维条码.(这之前二维码也不是我做的)既然是甲方bb提出的,老板又安排到到我手上了,那么我就得心(一)甘(脸)情(苦)愿(逼)的默默解决呗. 二维码/二 ...

  10. Java版人脸跟踪三部曲之二:开发设计

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<Java版人脸跟踪三部曲> ...

最新文章

  1. windows无法配置此无线连接_Kubernetes 1.18功能详解:OIDC发现、Windows节点支持,还有哪些新特性值得期待?...
  2. 组合游戏系列5: 井字棋、五子棋AlphaGo Zero 算法实战
  3. 【SAP-PM模块】维护业务处理流程
  4. w,vmstat,top,sar
  5. 嵌入式linux硬件成本,嵌入式Linux驱动和固件有何区别?供应商是如何用固件压缩成本的?...
  6. redis 中一个字段 修改map_Redis bitmap 位图 从入门到精通 基础 实战 妙用
  7. 使用springboot集成jseesite
  8. 【OS学习笔记】四 什么是虚拟机
  9. c++基础学习(04)--(函数、数字、数组、字符串)
  10. Java工程师的进阶之路-Kafka篇(一)
  11. 会装64位solaris jdk1.6吗?
  12. JavaWeb01-HTML篇笔记(一)
  13. SDUT 2482 二叉排序树
  14. 产品经理入门知识梳理(含思维导图
  15. android js桥接,聊一聊桥接(JSBridge)的原理(下)
  16. 【实战模拟】使用Kali Linux进行域名解析——模拟测试
  17. 计算机组成原理 汇编语言
  18. 红米9a手动root方法
  19. 用Matlab作函数的图像
  20. socket编程——upd(数据报套接字)

热门文章

  1. jQuery最核心的基础设施之一——数据缓存模块进化史
  2. 《统一沟通-微软-实战》-6-部署-7-部署移动功能-1
  3. ╭☆难以割舍^_^就是牵挂☆╮
  4. 详解ThroughTek P2P 供应链漏洞对数百万物联网设备的安全新风险
  5. 黑客利用未修复的 Atlassian 服务器攻击电信运营商和 ISP
  6. Intel 旗下 Habana Labs 遭勒索软件 Pay2Key 攻击,数据被盗
  7. 开源管理软件 OpenEMR 被曝多个漏洞,可被用于攻陷医疗基础设施
  8. Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下
  9. 一个极简版本的 VUE SSR demo
  10. 巨人网络305亿并购海外棋牌类游戏公司审核遭暂停