使用zxing来生成二维码
使用zxing来生成二维码
二维码已经成为了现代生活中不可或缺的一部分,无论是商业还是个人使用,二维码都有着广泛的应用。而在二维码的生成过程中,zxing是一款非常优秀的开源库,它提供了一系列的API,可以帮助我们快速、方便地生成二维码。接下来,我们就来介绍一下如何使用zxing来生成二维码。
一、准备工作
在使用zxing生成二维码之前,我们需要先下载zxing的jar包,并将其导入到项目中。在此基础上,我们还需要导入一些其他的相关依赖,例如Google Guava和Apache Commons IO等。
二、生成二维码
在zxing中,生成二维码的核心类是QRCodeWriter,我们可以通过以下代码来生成一个简单的二维码:
public static void generateQRCode(String content, int width, int height, String filePath) throws Exception {
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
Path path = FileSystems.getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(bitMatrix, "png", path);
}
在上述代码中,我们首先创建了一个Hashtable对象,用于存储二维码的一些参数。其中,EncodeHintType.CHARACTER_SET表示使用utf-8编码,width和height分别表示二维码的宽度和高度。接着,我们调用QRCodeWriter的encode方法来生成二维码的BitMatrix对象。最后,我们将BitMatrix对象写入到指定的文件路径中。
三、生成带有Logo的二维码
除了普通的二维码之外,我们还可以生成带有Logo的二维码。在zxing中,生成带有Logo的二维码的核心类是MatrixToImageConfig,我们可以通过以下代码来生成一个带有Logo的二维码:
public static void generateQRCodeWithLogo(String content, int width, int height, String logoPath, String filePath) throws Exception {
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix, getMatrixToImageConfig());
Graphics2D g = image.createGraphics();
int logoWidth = image.getWidth() / 5;
int logoHeight = image.getHeight() / 5;
int logoX = (image.getWidth() - logoWidth) / 2;
int logoY = (image.getHeight() - logoHeight) / 2;
BufferedImage logo = ImageIO.read(new File(logoPath));
g.drawImage(logo, logoX, logoY, logoWidth, logoHeight, null);
g.dispose();
ImageIO.write(image, "png", new File(filePath));
}
private static MatrixToImageConfig getMatrixToImageConfig() {
return new MatrixToImageConfig(0xFF000001, 0xFFFFFFFF);
}
在上述代码中,我们首先生成了一个普通的二维码BitMatrix对象。接着,我们将BitMatrix对象转换为BufferedImage对象,并获取Graphics2D对象。然后,我们计算出Logo的宽度、高度、X轴和Y轴位置,并读取Logo图片。最后,我们将Logo绘制到BufferedImage对象上,并将其写入到指定的文件路径中。
总结
zxing是一款非常优秀的开源库,可以帮助我们快速、方便地生成二维码。在使用zxing生成二维码时,我们需要先准备好相关的依赖和jar包,并使用QRCodeWriter类来生成普通的二维码。如果需要生成带有Logo的二维码,我们可以使用MatrixToImageConfig类来实现。无论是生成普通的二维码还是带有Logo的二维码,zxing都是一个非常实用的工具。
使用zxing来生成二维码的更多相关文章
- C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)
1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...
- 基于Asp.Net Core,利用ZXing来生成二维码的一般流程
本文主要介绍如何在.net环境下,基于Asp.Net Core,利用ZXing来生成二维码的一般操作.对二维码工作原理了解,详情见:https://blog.csdn.net/weixin_36191 ...
- 【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)
有任何疑问请去我的新博客提出 https://blog.clso.fun/posts/2019-03-03/vb-net-zxing-net-qr-maker.html ZXing .NET 的项目主 ...
- Java中使用google.zxing快捷生成二维码(附工具类源码)
移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...
- 使用python调用zxing库生成二维码图片
(1) 安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install pytho ...
- ZXing.dll 生成二维码 C# winform net4.5
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 利用Spring Boot+zxing,生成二维码还能这么简单
在网站开发中,经常会遇到要生成二维码的情况,比如要使用微信支付.网页登录等,本文分享一个Spring Boot生成二维码的例子,这里用到了google的zxing工具类. 本文目录 一.二维码简介二. ...
- C#MVC用ZXing.Net生成二维码/条形码
开篇:zxing.net是.net平台下编解条形码和二维码的工具. 首先创建新项目 选择MVC模板 添加一个控制器 在项目引用中的引用ZXing 进行联网下载 控制器需要引用 后台控制器 pu ...
- com.google.zxing:core 生成二维码的简单使用
String content = ""; int size = 240; Hashtable<EncodeHintType, String> hints = new H ...
- 高校手机签到系统——zxing.net生成二维码(补充)
高校手机签到系统——第一部分Authority权限系统(上) 高校手机签到系统——第一部分Authority权限系统(下) 高校手机签到系统——手机客户端 关于zxing.net的使用网上已有很多说明 ...
随机推荐
- delphi 官方例子 simples 路径
公用 文件件 可能是隐藏的 若是的话 则显示 隐藏
- JS Leetcode 278. 第一个错误的版本 题解分析
壹 ❀ 引 本题来自LeetCode的278. 第一个错误的版本,难度简单,端午节就应该做点容易的题目缓解心情,题目描述如下: 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新 ...
- JS模块化系统
随着 JavaScript 开发变得越来越广泛,命名空间和依赖关系变得越来越难以处理.人们已经开发出不同的解决方案以模块系统的形式来解决这个问题. CommonJS(CJS) CommonJS 是一种 ...
- NC19989 [HAOI2012]容易题(EASY)
题目链接 题目 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能 ...
- JLink OB相关的一些记录
使用 STM32F103 Bluepill 制作 JLink OB https://github.com/GCY/JLINK-ARM-OB https://stm32duinoforum.com/fo ...
- thinkphp集成editormd一系列实战
介绍 最近php搞了个博客,需要集成markdown编辑器(富文本的太low了,效率也低),用的是时下比较火的editormd,除了基本的文档编辑我这里还实现了几个自己的需求: 使用ctrl-v实现将 ...
- C. Sum of Substrings题解
C. Sum of Substrings 题目大概意思,给你一个01串,求和最小,其中和是该串所有相邻字符所组成的十进制数的和. 如:0110, sum = 01 + 11 + 10 = 22. 通过 ...
- 文心一言 VS 讯飞星火 VS chatgpt (200)-- 算法导论15.2 4题
四.用go语言,对输入链长度为 n 的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点? 文心一言: 矩阵链乘法问题是一个经典的动态规划问题,其中给定一个矩阵链, ...
- 【Android逆向】某小说网站签名破解
1. 豌豆荚下载v5.4的版本 2. 参考前面两篇文章进行反编译和重打包后,安装到手机发现会有验签失败的报错 抓取log 03-29 16:15:37.545 25910 26539 D KM-NAT ...
- 树莓派开发笔记(十六):树莓派4B+安装mariadb数据库(mysql开源分支)并测试基本操作
前言 树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mariadb数据库服务(mysql的开源分支), ...