Java 创建/识别条形码、二维码
条形码(Barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常用于标示物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等信息,广泛应用于各个领域。常见的包括一维条码(条码)、二维条码(二维码)、彩色条码,在具体码制上可分为多种不同类型的条码,如UPC(统一产品代码,只能以数字表示)、Code 3(能表示字母、数字和其它一些符号共43个字符)、Code 128(表示高密度数据,字符串可变长,符号内含校验码)、Codabar(库德巴码,以起始/终止符a,b,c d四个字符、数字0 - 9,字符$、+、- 组成,可变长度,没有校验位)、QR码(呈正方形,常见以黑白两色组成。) 、PDF417(多行组成的条形码,可存储大量数据)、复合条码(新出现的码制类型,由两个很靠近的条码符号组成,包含互相关联的数据)等。以下内容,将介绍通过Java程序来创建、读取条码的方法。示例要点包括:
- 创建一维条形码(Barcode)
- 创建二维码(QR Code)
- 读取/识别条码
使用工具:Free Spire.Barcode for Java (免费版)
这里使用的工具,支持多种条码类型,包括条形码,二维码和邮政码,多达38种条码类型,如CODE 25、CODABAR、CODE 11、INTERLEAVED 25、CODE 39、CODE 39 EXTENDED、CODE 93、CODE 93 EXTENDED、CODE 128、EAN 8、EAN 13、EAN 128、EAN 14、SCC 14、SSCC 18、ITF 14、ITF 6、UPCA、UPCE、POST NET、SINGAPORE POST 4 STATE、PLANET、MSI、RSS 14、RSS 14 TRUNCATED、RSS LIMITED、RSS EXPANDED、USPS、SWISS POST PARCEL、PZN、OPC、DEUTSCHE POST IDENTCODE、DEUTSCHE POST 、LEITCODE、ROYAL MAIL 4 STATE、DATA MATRIX、QR CODE、PDF 417、PDF 417 MACRO等,可设置条码颜色,边框,边距,宽度以及各种属性,数据样式等等。
Jar文件获取及导入:
方法1:通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Barcode.jar文件导入到java程序。参考如下导入效果:

Java 代码示例
【示例1】创建一维条形码
import com.spire.barcode.BarCodeGenerator;
import com.spire.barcode.BarCodeType;
import com.spire.barcode.BarcodeSettings; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; public class CreateBarcode {
public static void main(String[] args) throws IOException {
BarcodeSettings settings = new BarcodeSettings();//创建BarcodeSettings实例
settings.setType(BarCodeType.Code_128);//指定条码类型
settings.setData("123456789");//设置条码数据
settings.setData2D("123456789");//设置条码显示数据
settings.setShowTextOnBottom(true);//设置数据文本显示在条码底部
settings.setX(0.8f);//设置黑白条宽度
settings.setImageHeight(50);//设置生成的条码图片高度
settings.setImageWidth(70);//设置生成的条码图片宽度
settings.hasBorder(true);//设置边框可见
settings.setBorderColor(new Color(135,206,250));//设置条码边框颜色
settings.setBorderWidth(1);//设置条码边框宽度
settings.setBackColor(new Color(240,255,255));//设置条码背景色 BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//创建BarCodeGenerator实例
BufferedImage bufferedImage = barCodeGenerator.generateImage();//根据settings生成图像数据,保存至BufferedImage实例
ImageIO.write(bufferedImage, "png", new File("CODE128.png"));//保存条码为PNG图片
System.out.println("Complete!");
}
}
条码创建效果:

【示例2】创建二维码
import com.spire.barcode.*; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; public class CreateQR {
public static void main(String[] args) throws IOException { BarcodeSettings settings = new BarcodeSettings();//创建BarcodeSettings实例
settings.setType(BarCodeType.QR_Code);//设置条码类型为QR二维码
settings.setData("Hello 123456789");//设置二维码数据
settings.setData2D("Hello 123456789");//设置二维码显示数据
settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);//设置数据类型
settings.setX(1.0f);//设置二维码模型宽度
settings.setQRCodeECL(QRCodeECL.H);//设置二维码纠错级别
settings.setImageWidth(50);//设置生成的二维码图片宽度
settings.setImageHeight(50);//设置生成的二维码图片高度
settings.hasBorder(false);//设置二维码边框不可见 BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//创建BarCodeGenerator实例
BufferedImage bufferedImage = barCodeGenerator.generateImage();//根据settings生成图像数据,保存至BufferedImage实例
ImageIO.write(bufferedImage, "png", new File("QRCode.png"));//保存二维码图片为PNG格式
System.out.println("Complete!");
}
}
二维码创建效果:

【示例3】读取/识别条码
import com.spire.barcode.*;
public class ScanBarcode {
public static void main(String[] args) throws Exception{
//使用scan方法从图片中识别Code 128条形码
String[] datas = BarcodeScanner.scan("CODE128.png", BarCodeType.Code_128);
System.out.print(datas[0]);
}
}
识别结果:

(本文完)
转载请注明出处!!
Java 创建/识别条形码、二维码的更多相关文章
- 在Android上使用ZXing识别条形码/二维码
越来越多的手机具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描的功能.......手机具备条码扫描的功能,可以优化购物流程,快速存储电子名片(二维码)等. 本文使用ZXing 1.6实现条码 ...
- Opencv+Zbar二维码识别(标准条形码/二维码识别)
使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...
- java学习-zxing生成二维码矩阵的简单例子
这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency> <gr ...
- zxing 如何识别反转二维码
说起二维码扫描,估计很多人用的是 zxing 吧. 然而 zxing 虽然好用,但是却有一些坑. 这边分析一下自己实际项目遇到的一个坑. 什么坑呢? 下面举个栗子你就懂了. 这边生成二维码使用的是网络 ...
- 分享:Java 开发精美艺术二维码
博客地址:https://ainyi.com/58 Java 开发精美艺术二维码 看到网络上各种各样的二维码层出不穷,好像很炫酷的样子,一时兴起,我也要制作这种炫酷二维码效果 例如: 根据以往例子 根 ...
- Java后台直接生成二维码介绍
Java后台直接生成二维码 1.其实jquery也可以直接生成二维码的,但我测试的时候,二维码生成后太模糊,难以识别.所以在这里介绍在后来生成二维码的方式. 2.不善于文字描述,直接上代码了. imp ...
- ZBar 是款桌面电脑用条形码/二维码扫描工具
ZBar 是款桌面电脑用条形码/二维码扫描工具 windows平台python 2.7环境编译安装zbar 最近一个项目需要识别二维码,找来找去找到了zbar和zxing,中间越过无数坑,总算基本 ...
- 【转】Delphi+Halcon实战一:两行代码识别QR二维码
Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...
- 微信创建带参数二维码并加上logo
1.因为带参数二维码有两种,分别是字符参数,数值参数,因此,在写创建方法的时候,需要进行判断 public void ShowQcCode(N_WX_QrCode code) { QRCodeCrea ...
- Java根据链接生成二维码
Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...
随机推荐
- Netty基础系列(4) --堆外内存与零拷贝详解
前言 到目前为止,我们知道Nio当中有三个最最核心的组件,分别是:Selelctor,Channel,Buffer.在Netty基础系列(3) --彻底理解NIO 这一篇文章中只是进行了大致的介绍. ...
- Linux--shell重定向与文件处理命令--02
一.IO重定向 1.数据输入:键盘---标准输入,但并不是唯一输入方式 ” | passwd –stdin username #同时添加用户和密码 while line;do 循环体...$line ...
- let 、const 、var、function声明关键字的新理解
今天在群里看到大佬们讨论let .const 的提升问题,有个大佬问 三种声明都在什么阶段提升? 什么阶段?这个真不清楚,以前是只知道let.const存在死区,没有变量提升,一下子就懵了 后经手 ...
- Spring Boot 统一异常这样处理和剖析,安否?
话说异常 「欲渡黄河冰塞川,将登太行雪满天」,无论生活还是计算机世界难免发生异常,上一篇文章RESTful API 返回统一JSON数据格式 说明了统一返回的处理,这是请求一切正常的情形:这篇文章将说 ...
- luoguP3588_[POI2015]PUS
题意 有一个\(n\)个数的序列,已知其中的\(k\)个数,然后有\(m\)个信息,每个信息给出区间\([l,r]\),和\(k\)个数,表示区间\([l,r]\)中这\(k\)个数大于剩下的\(r- ...
- 在Win10下,python3和python2同时安装并解决pip共存问题
前提 本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似. 在Win10下,python3和python2同时安装并解决pip共存问题解决: 1.下载python ...
- django分页的写法,前端后端!
django有一个自带的分页,虽然功能很全面,但是不适合我应用的场景,所以自己写了一个代码 拿走不谢! 应用的场景 : 1.最好是 django中使用 使用方法: 要的数据是( quesset 类型的 ...
- python webdriver 常用元素操作
1.新建实例 xx_driver = os.path.abspath(r"路径") os.environ["webdriver.xx.driver"] = xx ...
- copy and mutableCopy
结论: 1, 深复制与浅复制 2,immutable和mutable 3,代码分析: #pragma mark - String - (void)stringCopyAndMutableCopy { ...
- Spring-boot:多模块打包
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...