您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

Java 生成二维码实战

时间:2022-06-08 12:36:36  来源:  作者:码农突围666

简介

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


Tags:二维码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
iPhone或iPad用户必学:如何通过二维码快速共享Wi-Fi密码,简单又实用!
你有没有想过在不泄露网络密码的情况下与客人共享你的家庭或工作Wi-Fi?你肯定不是第一个这样想的人,我们很高兴地通知你,多亏了以下这个的变通方法,你现在可以使用iPhone或iPad...【详细内容】
2024-01-22  Search: 二维码  点击:(73)  评论:(0)  加入收藏
抖音圆形二维码是什么,怎么生成,有什么作用?
在信息技术迅猛发展的今天,跨平台的信息流动变得越来越重要。圆形二维码因其独特的跳转功能而受到了广泛关注,它能够方便地将用户从一个网络平台引导到另一个。这篇文章将介绍...【详细内容】
2024-01-08  Search: 二维码  点击:(76)  评论:(0)  加入收藏
一个二维码,撬动300亿市值的东方甄选!是福还是祸?
继昨日股价下跌后,7月28日上午市值逾300亿元的东方甄选股价反弹涨超12%。消息面上,抖音上东方甄选自营品店铺被关闭一事又有最新进展。据媒体报道,知情人士透露,东方甄选主播是...【详细内容】
2023-07-28  Search: 二维码  点击:(78)  评论:(0)  加入收藏
东方甄选直播间突然被抖音关闭3天!原因曝光:直播露出了二维码
快科技7月28日消息,近日东方甄选直播间突然被抖音官方关闭,东方甄选称这是“因规则要求,抖音平台自营产品店铺、自营产品直播间暂停营业3天”。据报道,此次关闭原因是主播在讲解...【详细内容】
2023-07-28  Search: 二维码  点击:(205)  评论:(0)  加入收藏
二维码设计都这么卷吗?!我又out了!
第一次看到这些二维码,我还以为是看到了一幅幅画,根本没想到是二维码。但实际上,这些都是如假包换的二维码,都可以扫码识别。话说最近人工智能(AI)开始席卷二维码生成技术,不少人开...【详细内容】
2023-06-17  Search: 二维码  点击:(172)  评论:(0)  加入收藏
Qt生成二维码
Qt生成二维码需要第三方库qrencode。  1、编译好的qrencode库获取:    链接: https://pan.baidu.com/s/1rss-9LlDVmJ-mfNmK_dELQ    提取码:h8lc  2、Qt配置qrenco...【详细内容】
2023-03-24  Search: 二维码  点击:(288)  评论:(0)  加入收藏
三招教你如何生成二维码
在现在的生活中,很多地方都需要使用到二维码这种形式,无论是手机支付,还是广告宣传,都会需要通过二维码来进行扫描识别,给我们的生活带来了许多的便利。那么你们知道如何生成二维...【详细内容】
2023-02-20  Search: 二维码  点击:(158)  评论:(0)  加入收藏
二维码的工作原理是什么?每天都在扫,会被用完吗?
说到二维码,大家再熟悉不过了,我们每天都会扫一扫,支付、加好友、登录账号、进出车站等等,它存在于我们生活的方方面面,用途广泛,已经成为我们不可或缺的朋友。总之,这个由黑白两种...【详细内容】
2023-02-05  Search: 二维码  点击:(203)  评论:(0)  加入收藏
Javascript生成二维码(QR)
网络上已经有非常多的二维码编码和解码工具和代码,很多都是服务器端的,也就是说需要一台服务器才能提供二维码的生成。本着对服务器性能的考虑,这种小事情都让服务器去做,感觉对...【详细内容】
2023-01-31  Search: 二维码  点击:(222)  评论:(0)  加入收藏
链接怎么转换二维码?链接在线转二维码如何操作?
想要将网址链接转二维码图片,可以使用在线二维码生成器来处理,无需复杂的操作,打开电脑浏览器就可以快速在线生成二维码图片。下面大家跟着小编一起来学习一下链接生成二维码的...【详细内容】
2023-01-07  Search: 二维码  点击:(291)  评论:(0)  加入收藏
▌简易百科推荐
Java 8 内存管理原理解析及内存故障排查实践
本文介绍Java8虚拟机的内存区域划分、内存垃圾回收工作原理解析、虚拟机内存分配配置,以及各垃圾收集器优缺点及场景应用、实践内存故障场景排查诊断,方便读者面临内存故障时...【详细内容】
2024-03-20  vivo互联网技术    Tags:Java 8   点击:(18)  评论:(0)  加入收藏
如何编写高性能的Java代码
作者 | 波哥审校 | 重楼在当今软件开发领域,编写高性能的Java代码是至关重要的。Java作为一种流行的编程语言,拥有强大的生态系统和丰富的工具链,但是要写出性能优异的Java代码...【详细内容】
2024-03-20    51CTO  Tags:Java代码   点击:(25)  评论:(0)  加入收藏
在Java应用程序中释放峰值性能:配置文件引导优化(PGO)概述
译者 | 李睿审校 | 重楼在Java开发领域,优化应用程序的性能是开发人员的持续追求。配置文件引导优化(Profile-Guided Optimization,PGO)是一种功能强大的技术,能够显著地提高Ja...【详细内容】
2024-03-18    51CTO  Tags:Java   点击:(31)  评论:(0)  加入收藏
Java生产环境下性能监控与调优详解
堆是 JVM 内存中最大的一块内存空间,该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Survivor 区,...【详细内容】
2024-02-04  大雷家吃饭    Tags:Java   点击:(61)  评论:(0)  加入收藏
在项目中如何避免和解决Java内存泄漏问题
在Java中,内存泄漏通常指的是程序中存在一些不再使用的对象或数据结构仍然保持对内存的引用,从而导致这些对象无法被垃圾回收器回收,最终导致内存占用不断增加,进而影响程序的性...【详细内容】
2024-02-01  编程技术汇  今日头条  Tags:Java   点击:(77)  评论:(0)  加入收藏
Java中的缓存技术及其使用场景
Java中的缓存技术是一种优化手段,用于提高应用程序的性能和响应速度。缓存技术通过将计算结果或者经常访问的数据存储在快速访问的存储介质中,以便下次需要时可以更快地获取。...【详细内容】
2024-01-30  编程技术汇    Tags:Java   点击:(78)  评论:(0)  加入收藏
JDK17 与 JDK11 特性差异浅谈
从 JDK11 到 JDK17 ,Java 的发展经历了一系列重要的里程碑。其中最重要的是 JDK17 的发布,这是一个长期支持(LTS)版本,它将获得长期的更新和支持,有助于保持程序的稳定性和可靠性...【详细内容】
2024-01-26  政采云技术  51CTO  Tags:JDK17   点击:(98)  评论:(0)  加入收藏
Java并发编程高阶技术
随着计算机硬件的发展,多核处理器的普及和内存容量的增加,利用多线程实现异步并发成为提升程序性能的重要途径。在Java中,多线程的使用能够更好地发挥硬件资源,提高程序的响应...【详细内容】
2024-01-19  大雷家吃饭    Tags:Java   点击:(111)  评论:(0)  加入收藏
这篇文章彻底让你了解Java与RPA
前段时间更新系统的时候,发现多了一个名为Power Automate的应用,打开了解后发现是一个自动化应用,根据其描述,可以自动执行所有日常任务,说的还是比较夸张,简单用了下,对于office、...【详细内容】
2024-01-17  Java技术指北  微信公众号  Tags:Java   点击:(105)  评论:(0)  加入收藏
Java 在 2023 年仍然流行的 25 个原因
译者 | 刘汪洋审校 | 重楼学习 Java 的过程中,我意识到在 90 年代末 OOP 正值鼎盛时期,Java 作为能够真正实现这些概念的语言显得尤为突出(尽管我此前学过 C++,但相比 Java 影响...【详细内容】
2024-01-10  刘汪洋  51CTO  Tags:Java   点击:(82)  评论:(0)  加入收藏
站内最新
站内热门
站内头条