欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-08 20:09:34
概述 zxing 是一个开源 java 类库用于解析多种格式的 1d/2d 条形码。目标是能够对qr编码、data matrix、upc的1d条形码进行解码。 其提供了多...

概述

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();
}

完整参考示例:测试例代码

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

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

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