当前位置: 移动技术网 > IT编程>开发语言>Java > java中ZXing 生成、解析二维码图片的小示例

java中ZXing 生成、解析二维码图片的小示例

2019年07月22日  | 移动技术网IT编程  | 我要评论

概述

zxing 是一个开源 java 类库用于解析多种格式的 1d/2d 条形码。目标是能够对qr编码、data matrix、upc的1d条形码进行解码。 其提供了多种平台下的客户端包括:j2me、j2se和android。

官网:zxing github仓库

实战

本例演示如何在一个非 android 的 java 项目中使用 zxing 来生成、解析二维码图片。

安装

maven项目只需引入依赖:

<dependency>
 <groupid>com.google.zxing</groupid>
 <artifactid>core</artifactid>
 <version>3.3.0</version>
</dependency>
<dependency>
 <groupid>com.google.zxing</groupid>
 <artifactid>javase</artifactid>
 <version>3.3.0</version>
</dependency>

如果非maven项目,就去官网下载发布版本:

生成二维码图片

zxing 生成二维码图片有以下步骤:

1.com.google.zxing.multiformatwriter 根据内容以及图像编码参数生成图像2d矩阵。

2.​ com.google.zxing.client.j2se.matrixtoimagewriter 根据图像矩阵生成图片文件或图片缓存 bufferedimage 。

public void encode(string content, string filepath) throws writerexception, ioexception {
  int width = 100;
  int height = 100;
  map<encodehinttype, object> encodehints = new hashmap<encodehinttype, object>();
  encodehints.put(encodehinttype.character_set, "utf-8");
  bitmatrix bitmatrix = new multiformatwriter().encode(content, barcodeformat.qr_code, width, height, encodehints);
  path path = filesystems.getdefault().getpath(filepath);
  matrixtoimagewriter.writetopath(bitmatrix, "png", path);
}

解析二维码图片

zxing 解析二维码图片有以下步骤:

1.使用 javax.imageio.imageio 读取图片文件,并存为一个 java.awt.image.bufferedimage 对象。

2.将 java.awt.image.bufferedimage 转换为 zxing 能识别的 com.google.zxing.binarybitmap 对象。

3.com.google.zxing.multiformatreader 根据图像解码参数来解析 com.google.zxing.binarybitmap 。

public string decode(string filepath) throws ioexception, notfoundexception {
  bufferedimage bufferedimage = imageio.read(new fileinputstream(filepath));
  luminancesource source = new bufferedimageluminancesource(bufferedimage);
  binarizer binarizer = new hybridbinarizer(source);
  binarybitmap bitmap = new binarybitmap(binarizer);
  hashmap<decodehinttype, object> decodehints = new hashmap<decodehinttype, object>();
  decodehints.put(decodehinttype.character_set, "utf-8");
  result result = new multiformatreader().decode(bitmap, decodehints);
  return result.gettext();
}

完整参考示例:

以下是一个生成的二维码图片示例:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网