您的位置:首页 > 娱乐 > 明星 > 高端品牌客户服务_漳州网站优化_关键字搜索软件_网络服务提供者不是网络运营者

高端品牌客户服务_漳州网站优化_关键字搜索软件_网络服务提供者不是网络运营者

2024/10/5 16:26:54 来源:https://blog.csdn.net/weixin_47872288/article/details/135583130  浏览:    关键词:高端品牌客户服务_漳州网站优化_关键字搜索软件_网络服务提供者不是网络运营者
高端品牌客户服务_漳州网站优化_关键字搜索软件_网络服务提供者不是网络运营者

目录

  • 前言
  • 1. 基本知识
  • 2. ZXing
  • 3. QRCode

前言

对于Java的基本知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

1. 基本知识

生成二维码在Java中有多种方法,常用的是通过第三方库来实现,比较流行的库包括 ZXing (Zebra Crossing) 和 QRCode

ZXing库中的核心API

  • MultiFormatWriter.encode():生成二维码矩阵
  • MatrixToImageWriter.writeToPath():将二维码矩阵保存为图片文件

QRCode库中的核心API

  • QRCode.from(content):从内容生成二维码
  • withSize(width, height):设置二维码的尺寸
  • file():生成二维码并保存为图片文件

ZXing库功能强大,适合生成复杂的二维码且提供了细粒度的控制
QRCode库使用简单,快速生成二维码,适合基础需求

二维码是一种将信息编码为二维图形的技术,常用于存储URL、文本、数字等信息。它由黑白模块组成,通常可以通过扫描来解码

生成二维码的过程主要分为两个步骤:

  • 编码:将需要存储的信息(如URL、文本等)编码为二维码的黑白模块
  • 绘制:根据编码信息绘制出二维码图像,通常可以保存为PNG、JPG等格式

使用ZXing生成二维码 ZXing是最常用的Java二维码生成库,支持多种格式(例如二维码、条形码)
其核心类包括:

  • MultiFormatWriter:用于生成二维码的核心类
  • BitMatrix:二维码的矩阵表示,用于保存黑白模块的分布
  • MatrixToImageWriter:将二维码矩阵转化为图片

二维码的参数设置

  • 宽度和高度:二维码图片的尺寸,通常是正方形
  • 编码字符集:通常使用UTF-8编码,确保支持中文等特殊字符
  • 错误纠正级别:二维码的容错能力,可以通过调整纠错级别提高二维码的鲁棒性

2. ZXing

依赖库配置(Maven项目)
在Maven项目中,需要在pom.xml中添加ZXing的依赖:

<dependencies><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.4.1</version></dependency>
</dependencies>

Demo如下:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.Writer;
import com.google.zxing.WriterException;
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.File;
import java.io.IOException;public class QRCodeGenerator {public static void main(String[] args) {// 要编码的文本String data = "Hello, QR Code!";// 生成的二维码图片文件路径String filePath = "qrcode.png";try {// 调用生成二维码的方法generateQRCodeImage(data, 300, 300, filePath);System.out.println("二维码生成成功!");} catch (WriterException | IOException e) {e.printStackTrace();}}/*** 生成二维码图像并保存到文件** @param text   要编码的文本* @param width  图像宽度* @param height 图像高度* @param filePath 保存文件路径* @throws WriterException 生成二维码异常* @throws IOException     IO异常*/private static void generateQRCodeImage(String text, int width, int height, String filePath)throws WriterException, IOException {// 创建 QRCodeWriter 实例QRCodeWriter qrCodeWriter = new QRCodeWriter();// 生成 BitMatrix,表示二维码的黑白矩阵BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);// 创建一个 BufferedImage,用于绘制图像BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);image.createGraphics();// 获取图形上下文Graphics2D graphics = (Graphics2D) image.getGraphics();// 设置背景色为白色graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, width, height);// 设置前景色为黑色graphics.setColor(Color.BLACK);// 在图像上绘制二维码的黑色矩阵for (int i = 0; i < width; i++) {for (int j = 0; j < height; j++) {if (bitMatrix.get(i, j)) {// 如果当前位置为黑色,填充一个像素graphics.fillRect(i, j, 1, 1);}}}// 将图像保存为 PNG 文件ImageIO.write(image, "png", new File(filePath));}
}

截图如下:

在这里插入图片描述

另外一个Demo:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.client.j2se.MatrixToImageWriter;import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;public class QRCodeGenerator {/*** 生成二维码* @param content 二维码中包含的内容,如URL或文本* @param width   二维码的宽度* @param height  二维码的高度* @param filePath 保存二维码图片的路径* @throws Exception 可能抛出的异常*/public static void generateQRCode(String content, int width, int height, String filePath) throws Exception {// 定义二维码的参数Map<EncodeHintType, Object> hints = new HashMap<>();// 设置编码字符集hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 设置二维码的容错级别,较高容错级别适合损坏或部分覆盖的二维码hints.put(EncodeHintType.ERROR_CORRECTION, com.google.zxing.qrcode.decoder.ErrorCorrectionLevel.H);// 生成二维码的BitMatrix(二维码的矩阵表示)BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 将二维码矩阵保存为图片文件Path path = Paths.get(filePath);MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);System.out.println("二维码已成功生成,保存路径: " + filePath);}public static void main(String[] args) {try {// 生成二维码的内容String content = "https://www.example.com";// 设置二维码的宽度和高度int width = 300;int height = 300;// 保存二维码图片的路径String filePath = "qr_code.png";// 调用生成二维码方法generateQRCode(content, width, height, filePath);} catch (Exception e) {e.printStackTrace();}}
}

3. QRCode

QRGen的xml依赖包
QRGen JavaSE » 3.0.1的xml依赖包

在Maven项目中,需要在pom.xml中添加QRCode的依赖:

<dependencies><dependency><groupId>net.glxn</groupId><artifactId>qrcode</artifactId><version>2.1</version></dependency>
</dependencies>
  1. 完整的代码示例
import net.glxn.qrgen.javase.QRCode;
import java.io.File;
import java.io.IOException;public class QRCodeDemo {/*** 生成二维码并保存为图片文件* @param content 二维码中包含的内容,如URL或文本* @param filePath 保存二维码图片的路径* @throws IOException 可能抛出的异常*/public static void generateQRCode(String content, String filePath) throws IOException {// 生成二维码并保存为PNG格式的图片File file = QRCode.from(content).withSize(250, 250).file();// 将生成的图片文件保存到指定路径file.renameTo(new File(filePath));System.out.println("二维码已成功生成,保存路径: " + filePath);}public static void main(String[] args) {try {// 生成二维码的内容String content = "https://www.example.com";// 保存二维码图片的路径String filePath = "qr_code_qrgen.png";// 调用生成二维码方法generateQRCode(content, filePath);} catch (IOException e) {e.printStackTrace();}}
}

QRCode 库实际上已经从 net.glxn.qrgen 包名更改为 com.github.kenglxn.qrgen,并且托管在 GitHub 上

因此,需要在 Maven 的 pom.xml 中使用正确的依赖配置:

  1. 在Maven项目中配置依赖
<dependency><groupId>com.github.kenglxn.qrgen</groupId><artifactId>qrgen</artifactId><version>2.6.0</version>
</dependency>
  1. 更新后的QRCode生成Demo代码
    以下是修正后的QRCode生成示例代码:
import com.github.kenglxn.qrgen.javase.QRCode;
import java.io.File;
import java.io.IOException;public class QRCodeDemo {/*** 生成二维码并保存为图片文件* @param content 二维码中包含的内容,如URL或文本* @param filePath 保存二维码图片的路径* @throws IOException 可能抛出的异常*/public static void generateQRCode(String content, String filePath) throws IOException {// 生成二维码并保存为PNG格式的图片File file = QRCode.from(content).withSize(250, 250).file();// 将生成的图片文件保存到指定路径file.renameTo(new File(filePath));System.out.println("二维码已成功生成,保存路径: " + filePath);}public static void main(String[] args) {try {// 生成二维码的内容String content = "https://www.example.com";// 保存二维码图片的路径String filePath = "qr_code_qrgen.png";// 调用生成二维码方法generateQRCode(content, filePath);} catch (IOException e) {e.printStackTrace();}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com