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 ...
随机推荐
- Selenium+Java - 结合sikuliX操作Flash网页
前言 前天被一个Flash的轮播图,给玩坏了,无法操作,后来请教了下crazy总拿到思路,今天实践了下,果然可以了,非常感谢! 模拟场景 打开百度地图 切换城市到北京 使用测距工具 测量 奥林匹克森林 ...
- 三层架构(MVC)实现简单登陆注册验证(含验证码)
前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...
- MonkeyRunner 第一天
1.安装集成Android SDK的环境(如Eclipse),主要是为了android的模拟器,安装python编译环境,MonkeyRunner是基于Jython 2.使用Eclipse打开Andr ...
- 剑指Offer(十八):二叉树的镜像
剑指Offer(十八):二叉树的镜像 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu ...
- Mybatis-plus的两种分页插件的配置方式
第一种: package com.paic.ocss.gateway.admin.config; import com.baomidou.mybatisplus.plugins.PaginationI ...
- springCould:使用Feign 实现声明式服务调用
一.Spring Cloud Feign概念引入通过前面的随笔,我们了解如何通过Spring Cloud ribbon进行负责均衡,如何通过Spring Cloud Hystrix进行服务断路保护,两 ...
- Python数据分析之numpy数组全解析
1 什么是numpy numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于大型.多维数据上执行数值计算. 在NumPy 中,最重要的对象是 ...
- MQTT服务器(Win)
系统环境准备 Java JDK >=1.6,系统环境变量配置JAVA HOME 链接:https://pan.baidu.com/s/1OO-KCdsCrdfjMtf6BVNl6Q 提取码:dy ...
- 安装tomcat出现的问题
今天在安装tomcat时出现了配置环境不对的问题. 在正确配置Tomcat环境变量后,遇到很多次运行startup.bat后,一个窗口一闪而过的. 解决方法: 1.在tomcat的目录下选中start ...
- ECMAScript---object对象类型详解
普通对象:由大括号包裹起来的,由零到多个属性名和属性值(键值对)组成的 那什么是属性呢? 属性:描述当前对象特征的,属性名是当前具备这个特征,属性值是这个特征的描述(专业语法,属性名称为键[key], ...