一、增加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生成二维码条形码的更多相关文章

  1. java学习-zxing生成二维码矩阵的简单例子

    这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency> <gr ...

  2. Java利用Zxing生成二维码

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxing生成与解析二维码 1.二维码的生成 1.1 将Zxing ...

  3. java 通过zxing生成二维码

    1.基本类提供二维码生成工具类 package com.green.util; import java.awt.image.BufferedImage; import java.io.ByteArra ...

  4. (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...

  5. Java根据链接生成二维码

    Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...

  6. Java后台直接生成二维码介绍

    Java后台直接生成二维码 1.其实jquery也可以直接生成二维码的,但我测试的时候,二维码生成后太模糊,难以识别.所以在这里介绍在后来生成二维码的方式. 2.不善于文字描述,直接上代码了. imp ...

  7. 通过zxing生成二维码

    二维码现在随处可见,在日常的开发中,也会经常涉及到二维码的生成,特别是开发一些活动或者推广方面的功能时,二维码甚至成为必备功能点.本文介绍通过 google 的 zxing 包生成带 logo 的二维 ...

  8. 使用google zxing生成二维码图片

    生成二维码工具类: 1 import java.awt.geom.AffineTransform; 2 import java.awt.image.AffineTransformOp; 3 impor ...

  9. zxing生成二维码设置边框颜色

    真是研究了很久很久,满满的泪啊 zxing生成二维码,默认是可以增加空白边框的,但是并没有可以设置边框颜色的属性. 其中增加空白边框的属性的一句话是: Map hints = new HashMap( ...

随机推荐

  1. final关键字用法总结

    在java中,可能使用到final关键字修饰的有数据.方法和类. 一.final 修饰数据 有final修饰的数据是用来告诉编译器一块数据是恒定不变的,有时数据恒定不变是很有用的,比如: 1.一个永不 ...

  2. confluence重置admin密码

    复方法: 1. 运行此sql 找到你的管理员帐户: select u.id, u.user_name, u.active from cwd_user u join cwd_membership m o ...

  3. Hibernate 一对多 保存和修改数据

    Student和Sclass表,Student外键cid是Sclass的cid create table sclass( cid ) primary key, cname ) )go create t ...

  4. android sdk manager 无法更新解决方法

    因为在开始->运行->cmd 中敲入 ping dl-ssl.google.com -t 始终ping不通 ,关闭cmd后 首先需要下载一个代理服务器下载地址 http://pan.bai ...

  5. 报表控件NCReport教程:集成NCReport到Qt应用程序中

    NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...

  6. Android DrawerLayout Plus 增强版抽屉菜单

    DrawerLayout是官方提供的侧滑菜单,相比SliddingMenu,它更加轻量级.默认情况下,DrawerLayout可以设置左侧或者右侧滑出菜单.如下,   xml布局: <!-- & ...

  7. python开发进阶之路(一)

    哎!好久没有写博客了,怪想念的,今天听了偶像的讲解,好多以前感觉很模糊的概念今天一下子就明朗了.下面就来整理一下今天的收获 一.如何成为一名优秀的开发人员 1.1  得先对自己使用的开发语言了如指掌, ...

  8. Dinic算法模板

    详解:http://blog.csdn.net/wall_f/article/details/8207595 算法时间复杂度:O(E * V * V) #include <cstdio> ...

  9. mysql 允许远程登陆

    参考:http://blog.chinaunix.net/uid-23215128-id-2951624.html 1.以root账户登录 2.grant all PRIVILEGES on disc ...

  10. min.css----全世界最快的CSS框架

      有一个CSS框架,叫min.css,它号称是全世界最快的. 难怪,它的代码就这一点. 你看它的页面例子,像Bootstrap,但比后者轻多了,它只是一些CSS样式,没有JavaScript代码. ...