商品条形码生成图片(二)

快速生成商品条形码(69码)API集成指南 快速生成:输入商品编号后,立即生成对应的69码条形码图像。浏览器友好:生成的条形码图像可以直接在浏览器中显示,无需额外下载。多种返回方式:支持直接返回显示图片(Base64编码)或JSON格式。详尽文档:提供详细的接口文档和示例代码,方便开发者快速上手。 阅读详情

转载地址: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.youkuaiyun.com/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 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());
			// 是否校验最后一位,默认是false
			jbarcode11.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标签中即可


C#生成二维码和条形码 条形码的应用场景极为广泛,在零售行业,收银员通过扫描商品的条形码,能快速获取商品的价格、名称等信息,完成结账流程,同时也方便商家进行库存管理;一般来说,二维码的纠错等级可分为 L(7% 容错率)、M(15% 容错率)、Q(25% 容错率)、H(30% 容错率)四个等级 ,以 H 等级为例,即便有 30% 的码字损坏,也能正常解码。另外,二维码制作成本低,只需借助普通的图形处理软件和打印机,就能轻松生成和打印,而且它的识读速度快,在移动支付、信息查询等场景中,用户只需瞬间就能完成扫码操作。 阅读详情

相关推荐

还在手动制作条形码?Excel VBA一键生成图片条码全攻略

在日常办公中,我们经常需要处理各种产品编码、资产编号等数据。传统的手动生成条形码方式效率低下,且容易出错。本文将手把手教你如何通过Excel VBA快速生成标准化的图片条形码,实现办公自动化质的飞跃。

weixin_39444768的博客 2492

JAVA生成条码(jbarcode)

条码技术在现在的应用非常广泛,几乎所有的商品包装上都会印有条形码,这一篇将通过实例演示JAVA如何生成条码

蒋固金(jianggujin)的专栏 5515

免费商品信息查询接口(条形码)

最近公司有一个需求”扫描商品条形码显示商品信息“,原以为国内应该会免费提供接口,理想总是美好的,现实都是残酷的。在阿里云、京东等API开放平台找了一番,基本都是按次调用收费;公司的需求每位用户一天可能多次调用接口,这样一算,成本太高。既然没有接口,网站查询肯定是有的;发现国内某商品信息服务平台,然而网页加了人机验证,靠单纯抓接口方式已行不通。 破解方法: 通过抓取url分析cookie信息,伪造假...

weixin_33832340的博客 1万+

java生成条码图片、打印二维码、图片合并、图片加文字

通过java生成二维码图片,可以添加文字内容,非常方便实现打印。 import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.awt.print.Printe

weijia3624的专栏 8467

影刀RPA实战:自动化批量生成条形码完整指南

今天我们聊聊使用影刀来实现批量生成条形码,条形码在零售行业运用非常广泛,主要作用表现在产品识别,库存管理,销售管理,防伪保护等,这些作用使其成为现代商业和工业环境中不可或缺的工具,它极大地提高了数据处理的速度和准确性,降低了运营成本,并提高了整体的工作效率。

2413

Code39和Code128条形码生成工具:BarCode Helper实战指南

htmltable {th, td {th {pre {简介:条形码广泛用于商品标识、库存管理等。Code39和Code128是常用格式,各有特点。辅助类简化了这两种条形码图片的生成过程,使软件开发集成条形码功能变得便捷。通过提供易于使用的API,开发者可以生成可被多种设备识别的条形码图片。辅助类还包括了实际的测试,确保条形码的应用可靠性。在压缩包中的可能是该辅助类的使用示例或测试程序。

weixin_42499004的博客 1322

java 使用zxing生成条形码(可自定义文字位置、边框样式)

最新工作中遇到生成条形码的需求,经过一番摸索之后找到了zxing这个工具类,实现效果如下: 首先引入依赖: <!-- 条形码生成器 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.0.0

YC是个程序员的博客 9022

生成条码(Barcode),并存为图片

生成条码支持如下格式 UPC-A UPC-E UPC 2 Digit Ext. UPC 5 Digit Ext. EAN-13 JAN-13 EAN-8 ITF-14 Interleaved 2 of 5 Standard 2 of 5 Codabar PostNet Bookland/ISBN Code 11 Code 39 Code 39 Extended Code 93 Code 128 Code 128-A Code 128-B Code 128-C LOGMARS MSI Telepen

基于java的条形码生成、读取和打印

基于java生成条形码和打印条形码

tiaoguo001的博客 8672

一维条形码生成并且保存成bmp图片,以方便打印C++MFC源码

一维条形码生成并且保存成bmp图片,以方便打印C++MFC源码.输入数字即可转化成bmp一维码图像,且可在图像上打字.方便做出入库系统用

pytorch图像分类篇: 花分类数据集下载和AlexNet网络搭建训练

一、花分类数据集下载 data_setdata_set该文件夹是用来存放训练数据的目录 使用步骤如下: (1)在data_set文件夹下创建新文件夹"flower_data" (2)点击链接下载花分类数据集 (3)解压数据集到flower_data文件夹下 (4)执行"flower_data.py"脚本自动将数据集划分成训练集train和验证集val ├── flower_data ├── flower_photos(解压的数据集文件夹,3670个样本) ...

橙子的博客 8218

python生成条形码和二维码

Barcode库/Qrcode库/MyQR库/Zxing库的简单介绍 0.本章内容 0.1.条形码的使用 1.1.条形码介绍 1.2.Barcode库的简单介绍 1.3.Barcode库常用方法及参数介绍 1.4.用python简单实现条形码生成 0.2.二维码的使用 2.1.二维码介绍 2.2.Qrcode库的简单介绍 2.3.使用qrcode库实现普通二维码 2.4.Qrcode库的高级用法 2.5.MyQR库

weixin_49898946的博客 1万+

SpringBoot+Vue企业级开源聚合支付系统!支持30+款支付平台,只需配置商户证书就能直接使用!

一款开源SAAS支付系统推荐

技术Z先生的博客 2720

java生成base64图片条形码

java生成条形码工具类: import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import javax.imageio.ImageIO; import org.jbarcode.JBarcode; import org.jbarcode.encode.Code128Encoder; import o...

qq_40005100的博客 1935

FPGA新手必看:Quartus生成jic文件全流程详解(附AS/JTAG模式选择指南)

本文详细解析了在Quartus中生成JIC文件以固化FPGA程序到Flash的全流程。核心在于理解JIC文件作为连接JTAG调试与AS固化的桥梁作用,并重点阐述了Convert Programming Files工具的关键配置步骤、AS与JTAG模式的选择逻辑,以及烧录过程中的常见问题排查指南,帮助开发者实现程序断电不丢失。

weixin_29271053的博客 275

Cadence PCB SI仿真实战:如何手动添加VIA过孔模型提升板级链路精度

本文详细介绍了在Cadence PCB SI仿真中如何手动添加VIA过孔模型以提升DDR4/5设计的精度。通过参数化建模和三维全波建模技术,工程师可以有效解决高速设计中的信号完整性问题,显著降低仿真误差。文章还提供了实战案例和常见问题解决方案,帮助优化板级链路性能。

weixin_28683391的博客 407

前端js生成条形码和EAN商品码(69码)

前端利用js生成普通条形码和EAN商品条形码(69码) 文章目录前端利用js生成普通条形码和EAN商品条形码(69码)普通条形码的生成环境步骤使用常用配置项DemoEAN商品条形码(商品69码)的生成环境步骤使用配置项Demo最后贴个实际成果图 由于工作需要,这两天接触了前端生成条形码的一些技术,在此做个笔记,也方便以后有需要的同行可以快速完成开发任务。 普通条形码的生成 环境 插件:JsB...

南来北往技术小栈 8122

电磁炉线圈加热仿真全流程:用Ansys Maxwell分析涡流效应与热损耗

本文详细介绍了使用Ansys Maxwell进行电磁炉线圈加热仿真的全流程。通过构建2D轴对称涡流场模型,深入分析了高频下的涡流效应、趋肤效应与热损耗分布,为优化线圈设计、提升加热效率与均匀性提供了量化依据和实用指南。

sss66的博客 965

用Python生成条形码图片

本文将介绍如何使用Python生成条形码,并通过实战代码讲解如何设置条码类型、编码内容、样式属性,以及保存图像。

Eiceblue的专栏 1113

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

JasonH2021的博客 405

你分得清ChatGPT、Gemini、Grok、豆包、千问、DeepSeek、OpenClaw、CloudCode、vibeCodeing、sKill、MCP,飞书、微信这些到底是什么吗?

AI技术生态呈现层级化发展,从基础模型到应用平台形成完整技术栈。核心分为五层:模型层(GPT、Gemini等基础模型)→AI助手层(ChatGPT等应用产品)→工具层(ClaudeCode等开发工具)→协议层(MCP等接口标准)→应用层(微信、飞书等平台)。未来趋势将形成"模型公司-开发框架-应用生态"三层结构,AI正逐步演变为新型操作系统,通过标准化协议连接各类外部系统,实现能力调用与生态整合。技术发展呈现出从底层基础设施到上层应用场景的垂直整合特征。

hy行者勇哥的博客 397

PB版code128条形码图片生成工具:轻松生成高质量条形码

PB版code128条形码图片生成工具:轻松生成高质量条形码 【下载地址】PB版code128条形码图片生成工具 PB版code128条形码图片生成工具是一款基于PB9开发的便捷工具,能够快速生成符合code128国际标准的条形码图片。它具备高效生成的特点,保证了图片质量和生成速度,同时支持多种图片格式,满足不同场景需求...

gitblog_06744的博客 348

2026AI漫剧放心大胆做!小白也能轻松出片(附保姆级教程)

要是在2025,我大概率会劝他再等等,毕竟那时工具还没这么顺手。但到了2026年的今天,我的回答得很干脆:放心去做,绝对没问题。这一年多来,AI漫剧这块的变化真可谓翻天覆地。过去你想拍个像样的短片,哪怕再简陋,也得凑齐拍摄设备、找场地、找演员,后期剪辑更是折磨。但现在,时代变了,AI已经把创作的门槛踏平了。你不需要请演员,也不用操心灯光布景,更不用为剪辑特效烧钱。一个人,一台电脑,花几天时间就能做一部完整的AI漫剧。你只要有有想表达的故事,突发的灵感,剩下的,都能直接交给AI落地。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 502

商品条形码

商品条形码(JBarcode) 之前没有使用过这个,现在使用JBarcode生成商品条形码,工作之前的准备工作:Eclipse:Eclipse Java EE IDE for Web Developers.Version: Helios Service Release 1Build id: 20100917-0705 ja

qq_27151553的博客 839

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

生成条形码,二维码的代码

生成条形码: public class BarcodeUtil { /** * 128条形码 * * @param strBarCode * 条形码:0-100位 * @param dimension * 商品条形码:尺寸 * @param barh...

qq_38807792的博客 773

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 商品条形码简介(一)
下一篇: XML生成实体对象
CZ__
博客等级 码龄9年 97粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值