Zxing是Google研发的一款非常好用的开放源代码的二维码生成工具,目前源码托管在github上,源码地址:

https://github.com/zxing/zxing

可以看到Zxing库有很多个模块,在Java语言中使用Zxing只需要关注core和javase两个模块,读者可以clone一份源码到本地,將core和javase两个工程打成jar包,添加到自己的工程中即可。

笔者看来,我们没有必要那样做,因为zxing的jar包我们可以从maven资源库中获取:

打开maven资源库http://www.mvnrepository.com/,搜索zxing:



前两条搜索结果就是我们需要的jar包,点进去下载即可,笔者在csdn上也上传了一份:

csdn下载地址:

http://download.csdn.net/detail/rongbo_j/8928013

新建java工程,將core-3.2.0.jar和javase-3.2.0.jar添加到build path中:

下面我们来编写二维码生成与识别测试用例:

package com.csii.zxing.test;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map; import javax.imageio.ImageIO; import org.junit.Test;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer; public class ZxingTest {
@SuppressWarnings("deprecation")
@Test
public void testEncoder()
{
//二维码内容
String text = "http://blog.csdn.net/rongbo_j";
int width = 200; //二维码图片宽度
int height = 200; //高度
String format = "gif"; //图片格式 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = null;
try {
//编码
bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints);
} catch (WriterException e1) {
e1.printStackTrace();
}
File outputFile = new File("src/1.gif");
try {
//输出二维码图片
MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
} catch (IOException e) {
e.printStackTrace();
} }
@Test
public void testDecoder() throws NotFoundException
{
//二维码图片路径
String path = this.getClass().getClassLoader().getResource("1.gif").getPath();
File imageFile = new File(path);
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
LuminanceSource source = new BufferedImageLuminanceSource(image);
Binarizer binarizer = new HybridBinarizer(source);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
//解码获取二维码中信息
Result result = new MultiFormatReader().decode(binaryBitmap, hints);
System.out.println(result.getText());
} catch (IOException e) {
e.printStackTrace();
}
}
}

上面的代码使用到了Junit4,打开Outline视图,在testEncoder()方法上点击右键=>Debug As=>Junit Test,可以看到src目录下生成一张gif图片:

运行testDecoder()方法对该图片进行识别,控制台输出:

http://blog.csdn.net/rongbo_j

Java二维码生成与解码工具Zxing使用的更多相关文章

  1. Java二维码生成与解码

      基于google zxing 的Java二维码生成与解码   一.添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包) <!-- google二维码工具 --> &l ...

  2. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍   我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...

  3. HTML-DEV-ToolLink(常用的在线字符串编解码、代码压缩、美化、JSON格式化、正则表达式、时间转换工具、二维码生成与解码等工具,支持在线搜索和Chrome插件。)

    HTML-DEV-ToolLink:https://github.com/easonjim/HTML-DEV-ToolLink 常用的在线字符串编解码.代码压缩.美化.JSON格式化.正则表达式.时间 ...

  4. C#二维码生成与解码(二)

    本文内容在<C#二维码生成与解码>的基础上增加了纠错级别和Logo图标加入,增加了二维码的功能.关于透明度在这里没有单独显现,因为在颜色里面就已经包含,颜色值由8位8进制构成,最前面的两位 ...

  5. java 二维码生成(可带图片)springboot版

    本文(2019年6月29日 飞快的蜗牛博客) 有时候,男人和女人是两个完全不同的世界,男人的玩笑和女人的玩笑也完全是两码事,爱的人完全不了解你,你也不要指望一个女人了解你,所以男的不是要求别人怎么样, ...

  6. C#实现二维码生成与解码

    前几天公司内部分享了一个关于二维码的例子,觉得挺好玩的,但没有提供完整的源码.有时候看到一个好玩的东西,总想自己Demo一个,于是抽空就自己研究了一下. 一.二维码的原理 工欲善其事,必先利其器.要生 ...

  7. java 二维码生成

    直接上代码: 二维码生成核心类: package com.bbkj.wechat.tool; import java.awt.image.BufferedImage; import java.io.F ...

  8. java二维码生成工具

    import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.ut ...

  9. Java 二维码生成工具类

    /** * 二维码 工具 * * @author Rubekid * */ public class QRcodeUtils { /** * 默认version */ public static fi ...

随机推荐

  1. Matlab与C++混合编程

    原文链接:http://blog.csdn.net/zouxy09/article/details/20553007 一不小心,成了一个忠实复制者...

  2. 【JS】【30】各种正则

    前言: 0,基本规则:有点枯燥,可以参考下 正则表达式 – 教程 | 菜鸟教程 http://www.runoob.com/regexp/regexp-tutorial.html 1,校验手机号 2, ...

  3. Alios-Things的学习与使用(1)

    目录 Alios-Things的学习与使用 1.简介 1.1 为什么要学alios-Things 2. 环境搭建 2.1 使用docker toolbox安装docker 2.2 测试使用dockde ...

  4. mDNS 原理的简单理解

    转自:http://www.binkery.com/post/318.html mDNS 原理的简单理解 mDNS multicast DNS , 使用5353端口. 在局域网内,你要通过一台主机和其 ...

  5. js中数组常用方法

    1.Array.push() 此方法是在数组的后面添加新加元素,此方法改变了数组的长度: var aa=[1,2,3]; var bb=aa.push(4,5); console.log(bb)    ...

  6. [网络流24题] 最长k可重区间集问题 (费用流)

    洛谷传送门 LOJ传送门 很巧妙的建图啊...刚了$1h$也没想出来,最后看的题解 发现这道题并不类似于我们平时做的网络流题,它是在序列上的,且很难建出来二分图的形. 那就让它在序列上待着吧= = 对 ...

  7. jQuery(Dom节点操作)

  8. Elasticsearch---基于scroll技术滚动搜索大量数据

    如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完 使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以 ...

  9. BA-防冻开关的安装

    防冻开关学名:防冻恒温保护器,在通风空调系统中监测加热盘管空气侧温度来防止盘管冻坏.具有较小的转换差和良好的重复性.可自动复位.当在30cm长的毛细管上温度低于选择的设定值时会产生一个闭合信号给DDC ...

  10. [Linux]第四部分-Linux用户管理

    登陆过程:1.从etc/passwd中查找账号,没有则退出,然后在etc/shadow中读出uid与密码表passwd中内容格式 用户名:密码:UID:GID:用户信息说明:家目录:用户所用Shell ...