转载地址:http://www.cnblogs.com/yuchuan/p/JBarcode2.html

(一)代码展示

package com.nicole.test;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.Code11Encoder;
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 filePath*            商品条形码图片存放路径:C://barcode//images//** @param barCode*            商品条形码:11位* @param imgFormat*            图片格式* * @return 图片存放路径+图片名称+图片文件类型*/public static String createBarCode11(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 jbarcode11 = new JBarcode(Code11Encoder.getInstance(), WidthCodedPainter.getInstance(),EAN13TextPainter.getInstance());// 获取到前11位String barCode = jbarCode.substring(0, len - 1);/** 最重要的是这里的设置,如果明白了这里的设置就没有问题 如果是默认设置, 那么设置就是生成一般的条形码 如果不是默认* 设置,那么就可以根据自己需要设置*/// 尺寸,面积,大小jbarcode11.setXDimension(Double.valueOf(0.5).doubleValue());// 条形码高度jbarcode11.setBarHeight(Double.valueOf(20).doubleValue());// 宽度率jbarcode11.setWideRatio(Double.valueOf(30).doubleValue());// 是否校验最后一位,默认是falsejbarcode11.setShowCheckDigit(true);// 生成二维码bi = jbarcode11.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 = "D://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://barcode//", "6937748304340", ImageUtil.JPEG);String path = TestBarcode.createBarCode11("D://barcode//", "99005050002", ImageUtil.JPEG);System.out.println(path);}}

(二)成果展示

(三)页面展示

生成图片后,用Base64编码后得到字符串,假如为:"123xyz"

<img src="https://img-blog.csdnimg.cn/2022010623525149104.png"/>

获取图片字符串代码如下(网上资源):

package com.nicole.test;import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;import javax.imageio.ImageIO;import org.jbarcode.JBarcode;
import org.jbarcode.encode.Code11Encoder;
import org.jbarcode.encode.Code128Encoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.encode.InvalidAtributeException;
import org.jbarcode.paint.BaseLineTextPainter;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.WidthCodedPainter;import sun.misc.BASE64Encoder;  public class BarcodeUtil {  /**  * 11条形码  *  * @param strBarCode  *            商品条形码:11位  * @param dimension  *            商品条形码:尺寸  * @param barheight  *            商品条形码:高度  * @return 图片(Base64编码)  */  public static String generateBarCode11(String strBarCode,String dimension,String barheight) {  try {  ByteArrayOutputStream outputStream = null;  BufferedImage bi = null;  int len = strBarCode.length();  JBarcode productBarcode = new JBarcode(Code11Encoder.getInstance(),  WidthCodedPainter.getInstance(),  EAN13TextPainter.getInstance());  // 尺寸,面积,大小 密集程度  productBarcode.setXDimension(Double.valueOf(dimension).doubleValue());  // 高度 10.0 = 1cm 默认1.5cm  productBarcode.setBarHeight(Double.valueOf(barheight).doubleValue());  // 宽度  productBarcode.setWideRatio(Double.valueOf(30).doubleValue());
//                  是否显示字体  productBarcode.setShowText(true);
//                 显示字体样式  productBarcode.setTextPainter(BaseLineTextPainter.getInstance());   // 生成二维码  bi = productBarcode.createBarcode(strBarCode);  outputStream = new ByteArrayOutputStream();  ImageIO.write(bi, "jpg", outputStream);  BASE64Encoder encoder = new BASE64Encoder();
//            System.err.println(encoder.encode(outputStream.toByteArray()));  return encoder.encode(outputStream.toByteArray());  } catch (Exception e) {  e.printStackTrace();  return "encodeError";  }  }  /**  * @param args  * @throws InvalidAtributeException  */  public static void main(String[] args) throws InvalidAtributeException {  String encode = BarcodeUtil.generateBarCode11("99005050002","0.5","20");  System.out.println(encode);}  }  

copy控制台输出的图片编码到img标签中即可

商品条形码生成图片(二)相关推荐

  1. php 生成图片二维码

    php生成图片二维码有很多方法,下面介绍一下我写的栗子: /*** 二维码*/public function qrcode($data) {$level = 'L'; // 纠错级别:L.M.Q.H$ ...

  2. SpringBoot使用hutool生成图片二维码

    在很多网站尤其是登录的时候,我们经常可以看到需要我们输入图片二维码,那图片二维码是如何生成的呢?点击图片我们是如何刷新二维码的呢?话不多说,直接开干 一.首先理解浏览器/服务器之间的通讯流程 二.导入 ...

  3. Hutool生成图片二维码 输出到前端

    文档地址 https://hutool.cn/docs/#/extra/%E4%BA%8C%E7%BB%B4%E7%A0%81%E5%B7%A5%E5%85%B7-QrCodeUtil pom引入 h ...

  4. java生成图片二维码

    import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.Buff ...

  5. Qrious生成图片二维码

    qrious是一款基于HTML5 Canvas的纯JS二维码生成插件.通过qrious.js可以快速生成各种二维码,可以控制二维码的尺寸颜色,还可以将生成的二维码进行Base64编码. qrious. ...

  6. Python37生成图片二维码报错:OSError: cannot write mode RGBA as JPEG

    代码如下: # 先导入模块 from MyQR import myqrmyqr.run(words='https://www.baidu.com',# 扫描二维码后,显示的内容,或是跳转的链接vers ...

  7. react 生成图片二维码_21个React开发神器

    来源 | https://www.jianshu.com/p/febbd8d3cdd4 下列工具中的重要性与排序无关. 1.Webpack Bundle Analyzer 有没有想过你的应用程序的哪些 ...

  8. PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)

    PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001  至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...

  9. Python案例笔记 | 用python制作二维码

    基于Python3版本的学习. 要用python制作二维码,需用python第三方库:MyQR . 安装myqr模块 首先需要在cmd中用pip安装myqr模块. win + r 打开运行命令,输入& ...

最新文章

  1. 曾经废寝忘食学到的技术,现在都没用了......
  2. C/C++代码的混合使用
  3. 周期长度和(KMP)
  4. 美国凯斯西储大学计算机硕士专业怎么样,在凯斯西储大学读硕士大约需要多少花费?...
  5. 解析 react、vue等路由参数的库 path-to-regexp
  6. Java并发编程-ReadWriteLock读写锁
  7. python创建自定义函数is_number()来判断一个字符是否是数字
  8. HTML文本样式标签
  9. 总结之:CentOS 6.5基于DHCP的PXE自动化安装系统详解
  10. 汉源高科2个万兆光24千兆网口万兆机架式工业交换机支持G.8032(ERPS)标准的以太环网交换机
  11. C语言指针学习(超详细)
  12. 3DMAX贴图材质免费网站
  13. CycloneII之EDA及学术开发功能描述
  14. php 公众平台开发教程,微信公众平台开发入门教程
  15. unity 模型加点击事件
  16. OpenCV VideoCapture使用方法(视频文件、摄像头、网络视频文件)
  17. 何学林:房价为什么降不下来?房价上涨的刚性是由强大的利益共同体共同作用的结果(原创首发,深度好文)——何学林房地产大策划之十二
  18. iOS Password AutoFill开发指南
  19. ttttttttttt
  20. vue 悬浮图标_vue实现可拖拽移动悬浮球

热门文章

  1. android小电脑,市场中10款最小的电脑
  2. 交通运输部办公厅关于印发《智慧交通让出行更便捷行动方案(2017—2020年)》的通知...
  3. 《影响力》,到底有多可怕?
  4. snort 基本关键字
  5. 数据库存储过程的作用
  6. 分享 | 借“铁死亡”之鉴,行“铜死亡”之师
  7. 滑块沿光滑不固定的斜面下滑,在到达斜面底端时的情况。
  8. python字符串有哪些表示形式_python字符串
  9. 手机移动端如何跳转至QQ 或者QQ的加好友页面
  10. Ubuntu--(8)段错误Segmentation fault (core dumped)