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

基于google zxing的Java二维码生成与解码

程序员文章站 2023-12-21 14:22:58
 本文实例为大家分享了java二维码生成与解码的具体代码,供大家参考,具体内容如下 一、添加maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包...

 本文实例为大家分享了java二维码生成与解码的具体代码,供大家参考,具体内容如下

一、添加maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包)

<!-- google二维码工具 -->
<dependency>
 <groupid>com.google.zxing</groupid>
 <artifactid>javase</artifactid>
 <version>3.1.0</version>
</dependency>

<!-- 文件上传 -->
<dependency>
 <groupid>commons-fileupload</groupid>
 <artifactid>commons-fileupload</artifactid>
 <version>1.3.1</version>
</dependency>
<dependency>
 <groupid>commons-io</groupid>
 <artifactid>commons-io</artifactid>
 <version>2.4</version>
</dependency>

二、创建生成二维码接口(接口参数为二维码内容,通常是url)

/**
 * 生成二维码
 * google zxing 实现
 * @param text
 * @return
 */
@requestmapping(value = "/qrcode/encode", method = requestmethod.post)
public void encodeqrcode(string text, httpservletresponse response) {
  try {
   // 设置二维码参数
   map<encodehinttype, object> hints = new hashmap<encodehinttype, object>();
   hints.put(encodehinttype.character_set, "utf-8");
   bitmatrix bitmatrix = new multiformatwriter().encode(text, barcodeformat.qr_code, 150, 150, hints);
   //返回二维码
   matrixtoimagewriter.writetostream(bitmatrix, "jpg", response.getoutputstream());
  } catch (exception e) {
   e.printstacktrace();
  }
}

三、创建二维码解码接口(直接返回解码后的二维码内容)

/**
 * 二维码图片解码
 * google zxing 实现
 * @param qrimg
 * @return
 */
@requestmapping(value = "/qrcode/decode", method = requestmethod.post)
public string decodeqrcode(multipartfile qrimg) {
  if (!qrimg.isempty()) {
   try {
     bufferedimage image = imageio.read(qrimg.getinputstream());

     binarybitmap binarybitmap = new binarybitmap(new hybridbinarizer(new bufferedimageluminancesource(image)));

     // 定义二维码的参数:
     hashmap<decodehinttype, object> hints = new hashmap<>();
     // 定义字符集
     hints.put(decodehinttype.character_set, "utf-8");

     result result = new multiformatreader().decode(binarybitmap, hints);

     return result.gettext();
   } catch (exception e) {
     e.printstacktrace();
   }
  }

  return null;
}

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

上一篇:

下一篇: