商品条形码生成图片(二)
转载地址: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标签中即可
商品条形码生成图片(二)相关推荐
- php 生成图片二维码
php生成图片二维码有很多方法,下面介绍一下我写的栗子: /*** 二维码*/public function qrcode($data) {$level = 'L'; // 纠错级别:L.M.Q.H$ ...
- SpringBoot使用hutool生成图片二维码
在很多网站尤其是登录的时候,我们经常可以看到需要我们输入图片二维码,那图片二维码是如何生成的呢?点击图片我们是如何刷新二维码的呢?话不多说,直接开干 一.首先理解浏览器/服务器之间的通讯流程 二.导入 ...
- Hutool生成图片二维码 输出到前端
文档地址 https://hutool.cn/docs/#/extra/%E4%BA%8C%E7%BB%B4%E7%A0%81%E5%B7%A5%E5%85%B7-QrCodeUtil pom引入 h ...
- java生成图片二维码
import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.Buff ...
- Qrious生成图片二维码
qrious是一款基于HTML5 Canvas的纯JS二维码生成插件.通过qrious.js可以快速生成各种二维码,可以控制二维码的尺寸颜色,还可以将生成的二维码进行Base64编码. qrious. ...
- Python37生成图片二维码报错:OSError: cannot write mode RGBA as JPEG
代码如下: # 先导入模块 from MyQR import myqrmyqr.run(words='https://www.baidu.com',# 扫描二维码后,显示的内容,或是跳转的链接vers ...
- react 生成图片二维码_21个React开发神器
来源 | https://www.jianshu.com/p/febbd8d3cdd4 下列工具中的重要性与排序无关. 1.Webpack Bundle Analyzer 有没有想过你的应用程序的哪些 ...
- PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)
PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001 至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...
- Python案例笔记 | 用python制作二维码
基于Python3版本的学习. 要用python制作二维码,需用python第三方库:MyQR . 安装myqr模块 首先需要在cmd中用pip安装myqr模块. win + r 打开运行命令,输入& ...
最新文章
- 曾经废寝忘食学到的技术,现在都没用了......
- C/C++代码的混合使用
- 周期长度和(KMP)
- 美国凯斯西储大学计算机硕士专业怎么样,在凯斯西储大学读硕士大约需要多少花费?...
- 解析 react、vue等路由参数的库 path-to-regexp
- Java并发编程-ReadWriteLock读写锁
- python创建自定义函数is_number()来判断一个字符是否是数字
- HTML文本样式标签
- 总结之:CentOS 6.5基于DHCP的PXE自动化安装系统详解
- 汉源高科2个万兆光24千兆网口万兆机架式工业交换机支持G.8032(ERPS)标准的以太环网交换机
- C语言指针学习(超详细)
- 3DMAX贴图材质免费网站
- CycloneII之EDA及学术开发功能描述
- php 公众平台开发教程,微信公众平台开发入门教程
- unity 模型加点击事件
- OpenCV VideoCapture使用方法(视频文件、摄像头、网络视频文件)
- 何学林:房价为什么降不下来?房价上涨的刚性是由强大的利益共同体共同作用的结果(原创首发,深度好文)——何学林房地产大策划之十二
- iOS Password AutoFill开发指南
- ttttttttttt
- vue 悬浮图标_vue实现可拖拽移动悬浮球
热门文章
- android小电脑,市场中10款最小的电脑
- 交通运输部办公厅关于印发《智慧交通让出行更便捷行动方案(2017—2020年)》的通知...
- 《影响力》,到底有多可怕?
- snort 基本关键字
- 数据库存储过程的作用
- 分享 | 借“铁死亡”之鉴,行“铜死亡”之师
- 滑块沿光滑不固定的斜面下滑,在到达斜面底端时的情况。
- python字符串有哪些表示形式_python字符串
- 手机移动端如何跳转至QQ 或者QQ的加好友页面
- Ubuntu--(8)段错误Segmentation fault (core dumped)