简介

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

欢迎关注我的微信公众号「码农突围」,分享Python、Java、大数据、机器学习、人工智能等技术,关注码农技术提升•职场突围•思维跃迁,20万+码农成长充电第一站,陪有梦想的你一起成长

android 生成二维码_Java 生成二维码实战相关推荐

  1. java如何输出ascll码_Java如何打印ASCII码

    Java如何打印ASCII码 1 Java打印ASCII码的方式 美国信息交换标准代码的ASCII缩写.它是一个7位字符集,包含128个(0到127)个字符.它代表一个字符的数值.例如,ASCII值的 ...

  2. java 转码_JAVA自带转码方式的学习

    最近工作中遇到一个问题,由于海外系统环境默认采用UTF-8格式编码,以支持多语言环境.而国内系统由于只需要支持中英文,故默认采用GBK编码格式.因此当把海外环境生成的交易报告单发送给国内的报表系统时, ...

  3. java txt 二维数组_java 将一个二维数组存到txt文件里,然后再读取

    java 将一个二维数组存到txt文件里,然后再读取 mip版  关注:286  答案:3  悬赏:30 解决时间 2021-01-26 21:40 已解决 2021-01-26 04:05 将一个d ...

  4. java 打印一维码_java生成一维码

    /** * * 一维码图片生成器 * @author winter.liu * */ public class OneBarcodeUtil { /** * 生成一维码 * @param value ...

  5. java生成文字与图片_java生成word(文字和图片)

    1.整体思路 利用xml模板,在模板中预留占位标识(${yourContent}),然后将xml转为ftl文件,通过Map传值填充对应的内容即可,word其实和html一样,也有自己的xml标签,表头 ...

  6. arcgis java 二次开发_arcgis二次开发_cad二次开发_java arcgis二次开发

    属性查询是GIS应用不可缺少的重要功能,尤其是在各种业务系统中,根据用户输入相应的查询条件,从属性要素中快速定位到用户感兴趣的要素,为业务应用提供了便利.本文就来聊一聊QGis二次开发中如何实现属性查 ...

  7. java生成验证码工具类_Java生成图形验证码工具类

    生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...

  8. java项目生成多个条码_java – 生成随机条形码 – 一个设计问题

    我正在修复生成条形码的java代码中的错误(线程问题).根据设计,条形码只是一个数字,下一个"未使用"条形码是序列中的下一个.有990亿可能的数字. 首先,由于安全问题,我不喜欢自 ...

  9. java 生成操作excel文件_Java生成和操作Excel文件

    AVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯 ...

最新文章

  1. 短信猫GSM Modem
  2. GBDT 和 AdaBoost区别?
  3. jstat 内存泄漏_一次Java内存泄漏的排查!要了自己的老命!
  4. C或C 如何通过程序执行shell命令并获取命令执行结果?
  5. linux中gradle编译慢,【Linux】解决linux下android studio用gradle构建从jcenter或maven下载依赖太慢...
  6. windows中运行qt5构建的程序提示 无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法
  7. 数据增量更新定义_技术资讯 | TiDB在准实时数据仓库中的实践
  8. Chrome浏览器Network面板http请求时间分析
  9. 关于mis系统思维导图
  10. wireless tools工具的移植和使用
  11. Launchpad是什么?Launchpad使用教程
  12. Megacli格式化显示脚本
  13. html5 表格 在线生成,专业的Web报表软件——在线表格生成制作工具
  14. JAVA美食预定推荐系统
  15. 联想笔记本键盘亮屏幕不亮_机械师笔记本电脑屏幕不亮但键盘亮,而且开不开机维修...
  16. Zookeeper开源客户端Curator之基本功能讲解
  17. python数据分析报告范文_Python数据分析求解题
  18. 如何不用串口线进行连接其他交换机
  19. 雷泰Endurance高温红外测温仪
  20. c语言double类型的输入

热门文章

  1. 通过浏览器启动php cli,Cron作业PHP脚本失败但脚本将通过CLI或浏览器运行
  2. 金山云笔试题:AKM函数
  3. 将网址url中的参数转化为JSON格式的两种方法
  4. .NET、.NET框架、ASP.NET和C#的关系(完成)
  5. ASP.NET Core 源码学习之 Logging[4]:FileProvider
  6. 软测试综述——PV操作
  7. mysql 40014无效,Oracle问题-ORA-14400:插入的分区关键字未映射到任何分区
  8. JavaScript之BOM对象(JS函数作用域、window、history、location对象)
  9. 单片机 驱动 标签打印机tsc_指令打印与驱动打印随笔
  10. python百度ai文字识别、代码分析_python利用百度AI实现文字识别功能