Java使用ZXing生成二维码条形码
一、增加zxing 的maven依赖,或者下载Zxingjar包
本实例使用的是 zxing3.2.0的版本
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.0</version>
</dependency>
maven依赖:
下载地址 http://pan.baidu.com/s/1gdH7PzP
说明:本实例使用的3.2.0版本已经使用的java7的nio. 旧版本的java io也支持,只是方法被标注为已过期了。
二、实例代码
/**
* 二维码&条形码操作工具
* <br/>
* 使用示例:<code>QRcodes.me().doMethod(O o1,O o2);</code>
* <br/>
*
* @author
* @date 2015年6月1日 下午5:00:55
*/
public class QRcodes { private static QRcodes me=null; public static final String default_stuffix="png"; public static final String default_charset="UTF-8"; private QRcodes(){} /**
* 单例
* @return
*/
public static QRcodes me(){
if(me==null){
me=new QRcodes();
}
return me;
} /**
* 生成二维码到指定文件路径
* @param codeData
* 二维码内容
* @param filePath
* 文件,格式为/fatherpath/childpath/filename.stuffix
* @param charset
* 编码默认为uft-8
* @param correctionLevel
* 错误修正级别1,2,3,4
* @param height
* 高度
* @param width
* 宽度
* @return
*/
public boolean createQRCode2File(QRcodeType codeType,String codeData, String filePath,String charset, int correctionLevel, int height, int width) {
try {
Path path=Paths.get(filePath);
String suffix=filePath.substring(filePath.lastIndexOf('.') + 1);
if(suffix==null||"".equals(suffix)){
suffix=default_stuffix;
}
if(charset==null||"".equals(charset)){
charset=default_charset;
}
Map<EncodeHintType, Object> hintMap = createHintMap(correctionLevel);
BarcodeFormat type=getBarcodeFormat(codeType);
BitMatrix matrix =new MultiFormatWriter().encode(new String(codeData.getBytes(charset), charset),type, width, height, hintMap);;
MatrixToImageWriter.writeToPath(matrix, suffix, path);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* 输出二维码到输出流
*
* @param codeData
* 二维码内容
* @param height
* 高度
* @param width
* 宽度
* @param charset
* 编码格式,默认utf-8
* @param suffix
* 生成的文件后缀名
* @param correctionLevel
* 错误修正级别1,2,3,4,级别越高越好识别,特别是在二维码中加入了logo的时候
* @param stream
* 输出流
* @return
* @throws WriterException
* @throws IOException
*/
public OutputStream createQRCode2Stream(QRcodeType codeType,String codeData,int height, int width,String charset,String suffix,int correctionLevel,OutputStream stream)throws WriterException, IOException {
if(suffix==null||"".equals("")){
suffix=default_stuffix;
}
Map<EncodeHintType, Object> hintMap = createHintMap(correctionLevel);
BarcodeFormat type=getBarcodeFormat(codeType);
BitMatrix matrix=new MultiFormatWriter().encode(new String(codeData.getBytes(charset), charset),type, width, height, hintMap);;
MatrixToImageWriter.writeToStream(matrix, suffix, stream);
return stream;
}
/**
* 参数处理,错误修正级别
* @param correctionLevel
* @return
*/
private Map<EncodeHintType, Object> createHintMap(int correctionLevel){
Map<EncodeHintType, Object> hintMap = new HashMap<EncodeHintType, Object>();
hintMap.put(EncodeHintType.MARGIN, 1);//空白填充
if(correctionLevel==2){
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
}else if(correctionLevel==3){
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
}else if(correctionLevel==4){
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
}else{
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
}
return hintMap;
} public BarcodeFormat getBarcodeFormat(QRcodeType codeType){
if(QRcodeType.QR_CODE==codeType){
return BarcodeFormat.QR_CODE;
}else if(QRcodeType.CODE_128==codeType){
return BarcodeFormat.CODE_128;
}else{
return BarcodeFormat.QR_CODE;
}
} }
public enum QRcodeType {
QR_CODE,//二维码
CODE_128,//条形码
other;
}
Java使用ZXing生成二维码条形码的更多相关文章
- java学习-zxing生成二维码矩阵的简单例子
这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency> <gr ...
- Java利用Zxing生成二维码
Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxing生成与解析二维码 1.二维码的生成 1.1 将Zxing ...
- java 通过zxing生成二维码
1.基本类提供二维码生成工具类 package com.green.util; import java.awt.image.BufferedImage; import java.io.ByteArra ...
- (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...
- Java根据链接生成二维码
Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...
- Java后台直接生成二维码介绍
Java后台直接生成二维码 1.其实jquery也可以直接生成二维码的,但我测试的时候,二维码生成后太模糊,难以识别.所以在这里介绍在后来生成二维码的方式. 2.不善于文字描述,直接上代码了. imp ...
- 通过zxing生成二维码
二维码现在随处可见,在日常的开发中,也会经常涉及到二维码的生成,特别是开发一些活动或者推广方面的功能时,二维码甚至成为必备功能点.本文介绍通过 google 的 zxing 包生成带 logo 的二维 ...
- 使用google zxing生成二维码图片
生成二维码工具类: 1 import java.awt.geom.AffineTransform; 2 import java.awt.image.AffineTransformOp; 3 impor ...
- zxing生成二维码设置边框颜色
真是研究了很久很久,满满的泪啊 zxing生成二维码,默认是可以增加空白边框的,但是并没有可以设置边框颜色的属性. 其中增加空白边框的属性的一句话是: Map hints = new HashMap( ...
随机推荐
- final关键字用法总结
在java中,可能使用到final关键字修饰的有数据.方法和类. 一.final 修饰数据 有final修饰的数据是用来告诉编译器一块数据是恒定不变的,有时数据恒定不变是很有用的,比如: 1.一个永不 ...
- confluence重置admin密码
复方法: 1. 运行此sql 找到你的管理员帐户: select u.id, u.user_name, u.active from cwd_user u join cwd_membership m o ...
- Hibernate 一对多 保存和修改数据
Student和Sclass表,Student外键cid是Sclass的cid create table sclass( cid ) primary key, cname ) )go create t ...
- android sdk manager 无法更新解决方法
因为在开始->运行->cmd 中敲入 ping dl-ssl.google.com -t 始终ping不通 ,关闭cmd后 首先需要下载一个代理服务器下载地址 http://pan.bai ...
- 报表控件NCReport教程:集成NCReport到Qt应用程序中
NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...
- Android DrawerLayout Plus 增强版抽屉菜单
DrawerLayout是官方提供的侧滑菜单,相比SliddingMenu,它更加轻量级.默认情况下,DrawerLayout可以设置左侧或者右侧滑出菜单.如下, xml布局: <!-- & ...
- python开发进阶之路(一)
哎!好久没有写博客了,怪想念的,今天听了偶像的讲解,好多以前感觉很模糊的概念今天一下子就明朗了.下面就来整理一下今天的收获 一.如何成为一名优秀的开发人员 1.1 得先对自己使用的开发语言了如指掌, ...
- Dinic算法模板
详解:http://blog.csdn.net/wall_f/article/details/8207595 算法时间复杂度:O(E * V * V) #include <cstdio> ...
- mysql 允许远程登陆
参考:http://blog.chinaunix.net/uid-23215128-id-2951624.html 1.以root账户登录 2.grant all PRIVILEGES on disc ...
- min.css----全世界最快的CSS框架
有一个CSS框架,叫min.css,它号称是全世界最快的. 难怪,它的代码就这一点. 你看它的页面例子,像Bootstrap,但比后者轻多了,它只是一些CSS样式,没有JavaScript代码. ...