二维码生成器简单使用

news2024/10/7 4:35:10

在这里插入图片描述

生成器工具类

以下是一个简单的 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.coloradmin.cn/o/751624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化分析,2023结婚全品类消费趋势洞察报告

结婚消费与人们的关系密切相关。结婚是一个重要的人生事件&#xff0c;往往伴随着大量的消费。人们倾向于在婚礼仪式、婚纱摄影、宴会等方面进行豪华的投资&#xff0c;以展示社会地位和个人品味。此外&#xff0c;结婚还涉及到婚戒、婚庆、蜜月旅行等费用。然而&#xff0c;随…

基于 NNCF 和 Optimum 面向 Intel CPU 对 Stable Diffusion 优化

&#x1f917; 宝子们可以戳 阅读原文 查看文中所有的外部链接哟&#xff01; 基于隐空间的扩散模型 (Latent Diffusion Model)&#xff0c;是解决文本到图片生成问题上的颠覆者。Stable Diffusion 是最著名的一例&#xff0c;广泛应用在商业和工业。Stable Diffusion 的想法简…

【雕爷学编程】Arduino动手做(149)---MAX9814咪头传感器模块3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

2023机器人操作系统(ROS)暑期学校预热-线下时间/地点-(转发)

原文地址&#xff1a; https://mp.weixin.qq.com/s/McjBgCpecL6OMgpcrPyY_Q 中国机器人操作系统&#xff08;ROS&#xff09;暑期学校自2015年举办以来&#xff0c;被中国机器人业界和学界&#xff0c;以及ROS开源基金会誉为除了ROSCon之外规模最大、参与人数最多、最成功的RO…

Redis的4种分布式限流算法

限流 服务系统流量多,的确是一件好事,但是如果过载,把系统打挂了,那大家都要吃席了。 所以,在各种大促活动之前,要对系统进行压测,评估整个系统的峰值QPS,要做一些限流的设置,超过一定阈值,就拒绝处理或者延后处理,避免把系统打挂的情况出现。 限流和熔断有什么区…

ES6、ES7、ES8、ES9、ES10、ES11、ES12都增加了哪些新特性?

摘要&#xff1a; 前端开发的都知道&#xff0c;JavaScript经历了不同标本的迭代&#xff0c;从1到12的不断完善中会添加不同的新特性来解决前一个阶段的瑕疵&#xff0c;让我们开发更加便捷与写法更加简洁&#xff01; 我记得我第一次接触js的时候是从大学的《21天精通JavaScr…

syri软件的安装

目录 1. 下载syri软件 ​2. 其他软件的安装和环境配置 3. plotsr软件的安装 1. 下载syri软件 网址&#xff1a;syri 该软件基于 3.5 版本 python&#xff0c;请提前使用 conda 创建 python 3.5 版本 环境并安装依赖模块 点击 view project on github 点击 9 release 我选择…

Matplotlib入门与实践(一)

Matplotlib 是一个 Python 的 2D绘图库&#xff0c;它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib&#xff0c;开发者可以仅需要几行代码&#xff0c;便可以生成绘图&#xff0c;直方图&#xff0c;功率谱&#xff0c;条形图&#xff0c;错误…

[Docker] Docker镜像管理和操作实践(二) 文末送书

前言&#xff1a; Docker镜像是容器化应用程序的打包和分发单元&#xff0c;包含了应用程序及其所有依赖项&#xff0c;实现了应用程序的可移植性和一致性。 文章目录 使用Dockerfile创建自定义镜像实践练手1. 创建基于ubuntu的自定义镜像&#xff0c;并安装nginx2. 配置Redis容…

React中 Real DOM 和 Virtual DOM 的区别?优缺点?

一、是什么 Real DOM&#xff0c;真实 DOM&#xff0c;意思为文档对象模型&#xff0c;是一个结构化文本的抽象&#xff0c;在页面渲染出的每一个结点都是一个真实 DOM 结构&#xff0c;如下&#xff1a; Virtual Dom&#xff0c;本质上是以 JavaScript 对象形式存在的对 DOM …

mysql索引的简单使用

删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段 在 goods_name 列上加唯一性索引&#xff08;用alter table方式&#xff09; alter table add unique index uniqididx(goods_name);去查看索引 发现有goods_name的唯一索引 在 shop_price 列上加普通…

视频分类(Classification)和摘要(Captioning)总结

论文&#xff1a;Deep Learning for Video Classification and Captioning 视频分类是指将大量的视频数据按照一定的标准和规则进行分类和归类&#xff0c;以便于用户快速找到自己感兴趣的视频内容。视频分类可以基于不同的特征和属性进行&#xff0c;例如内容主题、风格、语言…

服务器数据恢复-HP服务器双循环校验raid5数据恢复案例

服务器数据恢复环境&#xff1a; 一台HP ProLiant DL系列某型号服务器&#xff0c;hp smart array控制器&#xff0c;挂载了一台国产磁盘阵列&#xff0c;磁盘阵列中是一组由十几块SCSI硬盘组建的RAID5&#xff0c;RAID中的冗余采用双循环的校验方式。 服务器操作系统为LINUX&a…

机器学习实战:Python基于LASSO回归进行正则化(十二)

文章目录 1 前言1.1 LASSO的介绍1.2 LASSO的应用 2. diabetes数据集实战演示2.1 导入函数2.2 导入数据2.3 拟合模型&#xff08;AIC/BIC&#xff09;2.4 AIC/BIC可视化2.5 拟合交叉验证模型及可视化 3. Hitters数据集实战演示3.1 导入函数3.2 导入数据3.3 数据预处理3.4 定义变…

Git全栈体系(二)

第四章 Git 分支操作 一、什么是分支 在版本控制过程中&#xff0c;同时推进多个任务&#xff0c;为每个任务&#xff0c;我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来&#xff0c;开发自己分支的时候&#xff0c;不会影响主…

STM32 DMA 传输类型调试记录

外设到内存 模式&#xff1a;单次、外设地址不自增&#xff0c;内存地址自增 hdma_usart1_rx.Instance DMA1_Channel5; // 使用通道 5 hdma_usart1_rx.Init.Direction DMA_PERIPH_TO_MEMORY; // 方向&#xff1a;外设 to 内存 hdma_usart1_rx.Init.PeriphInc DMA_PINC…

云开发校园微社区-二手交易兼职交友微信小程序

云开发校园微社区微信小程序开源源码&#xff0c;这是一款云开发校园微社区-二手交易_兼职_交友_项目微信小程序开源源码&#xff0c;可以给你提供快捷方便的校园生活&#xff0c;有很多有趣实用的板块和功能&#xff0c;如&#xff1a;闲置交易、表白交友、疑问互答、任务兼职…

css3其他效果

1&#xff09;媒体查询 不同分辨率下不同的样式&#xff0c;适应不同的屏幕 最大宽度&#xff0c;最小宽度 2&#xff09;颜色渐变 渐变之后是一张图片 background-image 默认效果是从上到下&#xff08;to bottom&#xff09;的渐变 linear-gradient是线性渐变 要是想改变方…

udp如何传输大数据附udp高速传输技术解决方案

当遇到UDP传输大数据时&#xff0c;首先需要考虑使用专业的大数据传输软件或工具来满足UDP传输大数据的需求。其次&#xff0c;需要对UDP大数据传输的各个方面进行分析和优化&#xff0c;以确保传输的快速、安全、稳定和高效。 什么是UDP&#xff1f; UDP&#xff08;用户数据…

算法和算法评价

1 算法的基本概念 1.1 算法是什么&#xff1f; 算法是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每条序列指令表示一个或多个操作。 举例&#xff1a;程序 数据结构&#xff08;要处理的信息&#xff09; 算法&#xff08;处理信息的步骤…