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

 更新时间:2017年07月26日 08:43:35   作者:二十六度半  
这篇文章主要为大家详细介绍了基于google zxing的Java二维码生成与解码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

 本文实例为大家分享了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;
}

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

相关文章

  • 使用ByteArrayOutputStream写入字符串方式

    使用ByteArrayOutputStream写入字符串方式

    这篇文章主要介绍了使用ByteArrayOutputStream写入字符串方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • springboot项目接入天猫精灵语音功能

    springboot项目接入天猫精灵语音功能

    小编最近接手一个项目,涉及到天猫精灵的语音功能,今天小编通过本文给大家分享下springboot项目接入天猫精灵语音功能的详细过程及实例代码,感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • Netty分布式pipeline管道Handler的删除逻辑操作

    Netty分布式pipeline管道Handler的删除逻辑操作

    这篇文章主要为大家介绍了Netty分布式pipeline管道Handler的删除逻辑操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • BaseJDBC和CRUDDAO的写法实例代码

    BaseJDBC和CRUDDAO的写法实例代码

    这篇文章主要介绍了BaseJDBC和CRUDDAO的写法实例代码,代码注释十分详细,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • SpringCloud OpenFeign使用详解

    SpringCloud OpenFeign使用详解

    在springcloud微服务生态体系下,作为服务之间相互调用的重要组件openfeign,在其中承担着非常重要的作用,本篇以springcloud中提供的远程接口调用组件openfeign为例,来聊聊openfeign的详细使用,感兴趣的同学可以参考阅读
    2023-05-05
  • redis setIfAbsent和setnx的区别与使用说明

    redis setIfAbsent和setnx的区别与使用说明

    这篇文章主要介绍了redis setIfAbsent和setnx的区别与使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Springboot集成minio实现文件存储的实现代码

    Springboot集成minio实现文件存储的实现代码

    MinIO 是一款基于Go语言的高性能对象存储服务,本文主要介绍了Springboot集成minio实现文件存储的实现代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java并发系列之ReentrantLock源码分析

    Java并发系列之ReentrantLock源码分析

    这篇文章主要为大家详细介绍了Java并发系列之ReentrantLock源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 解析Springboot集成Tile38客户端之Set命令实现示例

    解析Springboot集成Tile38客户端之Set命令实现示例

    这篇文章主要为大家介绍了解析Springboot集成Tile38客户端之Set命令实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Spring实现自定义注解处理器解析和处理注解

    Spring实现自定义注解处理器解析和处理注解

    这篇文章主要介绍了Spring实现自定义注解处理器解析和处理注解,注解在现代Java编程中扮演了至关重要的角色,无论是简化代码、增强可读性,还是将元数据与业务逻辑分离,注解都让我们的代码更加优雅和灵活,需要的朋友可以参考下
    2024-10-10

最新评论