前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >商品条形码(JBarcode)Java版(二)

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

作者头像
艾特
发布2023-10-10 13:58:46
5280
发布2023-10-10 13:58:46

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

——题记

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

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

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

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

代码语言:javascript
复制
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); 
  
    } 
  
} 

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

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

  附:上一篇链接地址:商品条形码(JBarcode)

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档