使用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来生成二维码的更多相关文章

  1. C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)

    1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...

  2. 基于Asp.Net Core,利用ZXing来生成二维码的一般流程

    本文主要介绍如何在.net环境下,基于Asp.Net Core,利用ZXing来生成二维码的一般操作.对二维码工作原理了解,详情见:https://blog.csdn.net/weixin_36191 ...

  3. 【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)

    有任何疑问请去我的新博客提出 https://blog.clso.fun/posts/2019-03-03/vb-net-zxing-net-qr-maker.html ZXing .NET 的项目主 ...

  4. Java中使用google.zxing快捷生成二维码(附工具类源码)

    移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...

  5. 使用python调用zxing库生成二维码图片

    (1)     安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install pytho ...

  6. ZXing.dll 生成二维码 C# winform net4.5

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. 利用Spring Boot+zxing,生成二维码还能这么简单

    在网站开发中,经常会遇到要生成二维码的情况,比如要使用微信支付.网页登录等,本文分享一个Spring Boot生成二维码的例子,这里用到了google的zxing工具类. 本文目录 一.二维码简介二. ...

  8. C#MVC用ZXing.Net生成二维码/条形码

    开篇:zxing.net是.net平台下编解条形码和二维码的工具. 首先创建新项目 选择MVC模板  添加一个控制器  在项目引用中的引用ZXing 进行联网下载 控制器需要引用 后台控制器   pu ...

  9. com.google.zxing:core 生成二维码的简单使用

    String content = ""; int size = 240; Hashtable<EncodeHintType, String> hints = new H ...

  10. 高校手机签到系统——zxing.net生成二维码(补充)

    高校手机签到系统——第一部分Authority权限系统(上) 高校手机签到系统——第一部分Authority权限系统(下) 高校手机签到系统——手机客户端 关于zxing.net的使用网上已有很多说明 ...

随机推荐

  1. delphi 官方例子 simples 路径

    公用 文件件 可能是隐藏的 若是的话 则显示 隐藏

  2. JS Leetcode 278. 第一个错误的版本 题解分析

    壹 ❀ 引 本题来自LeetCode的278. 第一个错误的版本,难度简单,端午节就应该做点容易的题目缓解心情,题目描述如下: 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新 ...

  3. JS模块化系统

    随着 JavaScript 开发变得越来越广泛,命名空间和依赖关系变得越来越难以处理.人们已经开发出不同的解决方案以模块系统的形式来解决这个问题. CommonJS(CJS) CommonJS 是一种 ...

  4. NC19989 [HAOI2012]容易题(EASY)

    题目链接 题目 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能 ...

  5. JLink OB相关的一些记录

    使用 STM32F103 Bluepill 制作 JLink OB https://github.com/GCY/JLINK-ARM-OB https://stm32duinoforum.com/fo ...

  6. thinkphp集成editormd一系列实战

    介绍 最近php搞了个博客,需要集成markdown编辑器(富文本的太low了,效率也低),用的是时下比较火的editormd,除了基本的文档编辑我这里还实现了几个自己的需求: 使用ctrl-v实现将 ...

  7. C. Sum of Substrings题解

    C. Sum of Substrings 题目大概意思,给你一个01串,求和最小,其中和是该串所有相邻字符所组成的十进制数的和. 如:0110, sum = 01 + 11 + 10 = 22. 通过 ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (200)-- 算法导论15.2 4题

    四.用go语言,对输入链长度为 n 的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点? 文心一言: 矩阵链乘法问题是一个经典的动态规划问题,其中给定一个矩阵链, ...

  9. 【Android逆向】某小说网站签名破解

    1. 豌豆荚下载v5.4的版本 2. 参考前面两篇文章进行反编译和重打包后,安装到手机发现会有验签失败的报错 抓取log 03-29 16:15:37.545 25910 26539 D KM-NAT ...

  10. 树莓派开发笔记(十六):树莓派4B+安装mariadb数据库(mysql开源分支)并测试基本操作

    前言   树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mariadb数据库服务(mysql的开源分支), ...