二维码生成器简单使用

在这里插入图片描述

生成器工具类

以下是一个简单的 QRCodeUtil 示例,这个工具类使用了 zxing 库来生成二维码图片:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;public class QRCodeUtil {private static final String DEFAULT_IMAGE_FORMAT = "PNG";private static final int DEFAULT_WIDTH = 300;private static final int DEFAULT_HEIGHT = 300;public static BufferedImage createQRCode(String content) throws Exception {return createQRCode(content, DEFAULT_WIDTH, DEFAULT_HEIGHT);}public static BufferedImage createQRCode(String content, int width, int height) throws Exception {BitMatrix matrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height);BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {image.setRGB(x, y, matrix.get(x, y) ? Color.BLACK.getRGB() : Color.WHITE.getRGB());}}return image;}public static byte[] toByteArray(BufferedImage image, String format) throws IOException {ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(image, format, os);return os.toByteArray();}public static String toBase64String(BufferedImage image, String format) throws IOException {byte[] bytes = toByteArray(image, format);return java.util.Base64.getEncoder().encodeToString(bytes);}
}

这个 QRCodeUtil 工具类包含了以下方法:

  • createQRCode(String content):生成默认宽度和高度的二维码图片,并返回 BufferedImage 对象。
  • createQRCode(String content, int width, int height):根据指定的宽度和高度生成二维码图片,并返回 BufferedImage 对象。
  • toByteArray(BufferedImage image, String format):将 BufferedImage 对象转换为字节数组,并指定图像格式。
  • toBase64String(BufferedImage image, String format):将 BufferedImage 对象转换为 Base64 编码的字符串,并指定图像格式。

您可以根据需要使用这些方法来生成二维码图片,并将其转换为字节数组或 Base64 字符串。请确保在使用完 BufferedImage 对象后关闭相关资源,避免资源泄漏。

测试

下面是一个使用 QRCodeUtil 的案例,展示了如何生成二维码并将其保存为图片文件以及转换为 Base64 字符串:

public class QRCodeExample {public static void main(String[] args) {String content = "https://example.com"; // 要生成二维码的内容try {// 生成二维码图片BufferedImage qrCodeImage = QRCodeUtil.createQRCode(content);// 将二维码保存为图片文件String imagePath = "path/to/save/image.png";  // 设置保存路径和文件名File outputFile = new File(imagePath);ImageIO.write(qrCodeImage, "PNG", outputFile);System.out.println("二维码已保存为图片:" + imagePath);// 将二维码转换为 Base64 字符串String base64Image = QRCodeUtil.toBase64String(qrCodeImage, "PNG");System.out.println("Base64 图片数据:" + base64Image);} catch (Exception e) {e.printStackTrace();}}
}

这个案例中,我们首先指定要生成二维码的内容为 https://example.com。然后,我们调用 createQRCode(content) 方法生成二维码图片,并保存到指定的路径。

接着,我们调用 toBase64String(qrCodeImage, "PNG") 方法将二维码图片转换为 Base64 字符串,其中第二个参数表示图像格式(这里使用 PNG 格式)。

最后,我们通过打印输出来展示保存为图片文件的路径和转换后的 Base64 图片数据。

请确保在运行示例代码之前,根据实际情况修改保存路径和文件名。另外,需要添加相关的依赖包(如 zxing 库)以使代码能够顺利编译和运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/21466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言、C++和C#:区别与特点的比较

C语言、C和C#是三种不同的编程语言&#xff0c;它们在以下几个方面存在区别&#xff1a; 设计宗旨&#xff1a;C语言是一种过程式编程语言&#xff0c;旨在提供高效的系统级编程。C是在C语言基础上发展而来的&#xff0c;既支持过程式编程&#xff0c;也支持面向对象编程。C#是…

出海企业系列风险分析--网站需要验证码吗?

最近接待了几位从discuz来的用户&#xff0c;说是想要给自己海外的网站安装验证码&#xff0c;但是discuz境外服务器还要解析安装中心的DNS到境外服务器上&#xff0c;所以基于discuz建站的不好之处就在这里。 而且我们还讨论到一个问题&#xff0c;海外的网站&#xff0c;需要…

C#制作打包安装程序,安装程序类使用

这里写目录标题 安装Microsoft Visual Studio Installer Projects创建安装项目设置安装程序文件设置程序桌面图标给程序设置安装程序名称安装程序类怎么使用Installer1.cs自定义安装步骤自定义设置安装程序路径&#xff0c;让用户安装时不能选择安装路径生成安装包 安装Microso…

数据结构(王道)——顺序表的基本操作(查找)

顺序表基本操作之按位查找&#xff1a; 顺序表基本操作之按值查找&#xff1a; 关于结构体类型是否相等的比较方法 顺序表查找总结&#xff1a;

Mysql select查询练习

1、查询出部门编号为30的所有员工&#xff1a; select * from emp where deptno30; 2、所有销售员的姓名、编号和部门编号&#xff1a; select ename,empno,deptno from emp where job销售员; 3、找出奖金高于工资的员工&#xff1a; select * from emp where comm > sai…

2023-7-12-第十七式状态模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

获取全国各地行政区的genjson数据以及使用leaflet加载行政区数据

前言 在写代码之前&#xff0c;我们需要做一些准备工作&#xff0c;需要有一份某个行政区的geojson数据&#xff0c;如果你没有也没关系&#xff0c;我们可以去下载&#xff0c;地址&#xff1a;geojson数据下载网站 打开网站&#xff0c;选择自己想要获取的行政区&#xff0…

【FAQ】API6低代码开发问题汇总

参考文档&#xff1a; 低代码开发参考文档&#xff1a; 文档中心:使用低代码进行开发 基于景区模板开发元服务&#xff1a; 文档中心:模板简介 使用API6低代码开发遇到的问题汇总情况如下&#xff1a; 1、低代码环境下&#xff0c;如何实现box-shadow阴影效果的配置&#…

瑞萨RFP工具使用问题总结

最近在用瑞萨的RH850&#xff0c;需要用到瑞萨提供的刷新工具RFP&#xff08;Renesas Flash Programmer&#xff09;&#xff0c;但是总是遇到一些问题&#xff0c;除了一些能够在官网上找到答案的问题&#xff0c;还遇到了其他各种各样的问题&#xff0c;这里记录一下问题和对…

(五)Flask之深入剖析路由源码

路由&#xff08;Route&#xff09;这个概念在所有web框架中都非常重要&#xff0c;它是用于定义URL和对应的处理函数&#xff08;视图&#xff09;之间的映射关系。通过定义路由&#xff0c;可以使web框架应用程序能够响应不同的URL请求&#xff0c;并执行相应的逻辑。 源码剖…

巧用浮动布局、解决高度塌陷实例分享

问题 如图所示&#xff0c;这种效果该怎么实现呢&#xff1f; 面包屑导航和按钮一行两端显示面包屑或编辑栏超出宽度则自动另行显示 实现 采用浮动&#xff0c;绿色块左浮&#xff0c;蓝色块右浮&#xff0c;利用浮动特性实现宽度超出另一行显示的效果&#xff0c;并是动态的…

flutter页面添加透明遮罩

路由工具 import package:test/main.dart; import package:flutter/material.dart;import circle_page_route.dart;class NavigatorUtil {static push(Widget page, {BuildContext context}) {return Navigator.push(context ?? navigatorKey.currentContext,MaterialPageRo…