二维码的生成与解析。有多种途径。我选择用大品牌,google老大的zxing。
gitHub链接是(我用的3.0.0,已经是nio了)
https://github.com/zxing/zxing/tree/zxing-3.0.0
- // 其中输出图像和读取图像的类在core包
- MultiFormatReader
- MultiFormatWriter
- // 生成矩阵的类在javase的包里
- MatrixToImageWriter
pom.xml中的配置为
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.shihy</groupId>
- <artifactId>qrcode</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>qrcode</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.google.zxing</groupId>
- <artifactId>core</artifactId>
- <version>3.0.0</version>
- </dependency>
- <dependency>
- <groupId>com.google.zxing</groupId>
- <artifactId>javase</artifactId>
- <version>3.0.0</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.1.29</version>
- </dependency>
- </dependencies>
- </project>
生成图像与解析图像的测试工具类:
- package com.polysaas.edu.qrcode;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.nio.file.FileSystems;
- import java.nio.file.Path;
- import java.util.HashMap;
- import java.util.Map;
- import javax.imageio.ImageIO;
- import org.junit.Test;
- import com.alibaba.fastjson.JSONObject;
- import com.google.zxing.BarcodeFormat;
- import com.google.zxing.Binarizer;
- import com.google.zxing.BinaryBitmap;
- import com.google.zxing.DecodeHintType;
- import com.google.zxing.EncodeHintType;
- import com.google.zxing.LuminanceSource;
- import com.google.zxing.MultiFormatReader;
- import com.google.zxing.MultiFormatWriter;
- import com.google.zxing.NotFoundException;
- import com.google.zxing.Result;
- import com.google.zxing.WriterException;
- import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
- import com.google.zxing.client.j2se.MatrixToImageWriter;
- import com.google.zxing.common.BitMatrix;
- import com.google.zxing.common.HybridBinarizer;
- public class QRCodeTest {
- /**
- * 生成图像
- *
- * @throws WriterException
- * @throws IOException
- */
- @Test
- public void testEncode() throws WriterException, IOException {
- String filePath = "D://";
- String fileName = "zxing.png";
- JSONObject json = new JSONObject();
- json.put(
- "zxing",
- "https://github.com/zxing/zxing/tree/zxing-3.0.0/javase/src/main/java/com/google/zxing");
- json.put("author", "shihy");
- String content = json.toJSONString();// 内容
- int width = 200; // 图像宽度
- int height = 200; // 图像高度
- String format = "png";// 图像类型
- Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
- hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
- BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
- BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
- Path path = FileSystems.getDefault().getPath(filePath, fileName);
- MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像
- System.out.println("输出成功.");
- }
- /**
- * 解析图像
- */
- @Test
- public void testDecode() {
- String filePath = "D://zxing.png";
- BufferedImage image;
- try {
- image = ImageIO.read(new File(filePath));
- LuminanceSource source = new BufferedImageLuminanceSource(image);
- Binarizer binarizer = new HybridBinarizer(source);
- BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
- Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
- hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
- Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码
- JSONObject content = JSONObject.parseObject(result.getText());
- System.out.println("图片中内容: ");
- System.out.println("author: " + content.getString("author"));
- System.out.println("zxing: " + content.getString("zxing"));
- System.out.println("图片中格式: ");
- System.out.println("encode: " + result.getBarcodeFormat());
- } catch (IOException e) {
- e.printStackTrace();
- } catch (NotFoundException e) {
- e.printStackTrace();
- }
- }
- }
测试生成图像为:
解析到的内容为:
- 图片中内容:
- author: shihy
- zxing: https://github.com/zxing/zxing/tree/zxing-3.0.0/javase/src/main/java/com/google/zxing
- 图片中格式:
- encode: QR_CODE
相关推荐
总结,Zxing是一个强大且灵活的二维码生成和解析工具,适合各种应用场景,无论你是开发者还是爱好者,都可以通过Zxing轻松实现二维码的创建和读取。对于想要深入了解二维码技术或者在项目中集成二维码功能的读者来说...
这个“zxing3.3.1二维码生成”是一个针对二维码生成功能的特定版本,版本号为3.3.1。这个jar包包含了ZXing库的所有功能,便于开发者在项目中集成二维码生成的功能。 ZXing库支持多种类型的条码和二维码,包括但不...
`QRCode.java`可能包含一个自定义的类,用于简化二维码生成和读取的操作,比如提供一个方法同时处理生成和解码的过程。`QRCodeFormat.java`则可能是用来定义二维码的格式或者参数设置,如容错级别、编码模式等。 在...
Google二维码生成解析zxing库 Android 代码,可以实现二维码生成,亲测可用。 代码为2016年6月9日从GitHub下载的,版本为3.2.1 GitHub对应地址代码为: https://github.com/zxing/zxing jar包原始下载地址为:...
在给定的“zxing2.2 二维码的生成解析(java)”主题中,我们将深入探讨ZXing库如何在Java环境中帮助开发者处理二维码的生成与解析。 1. **ZXing库介绍**: ZXing(读作“zebra crossing”)是由Google开发的一个多...
这个项目是针对C#编程语言的一个版本,即ZXing.NET,它为开发者提供了方便快捷的接口来识别和生成这两种编码。 **ZXing.NET库介绍** ZXing.NET是由Christian Schormann开发的,它是ZXing(Java版本)的C#移植,支持...
二维码生成** 生成二维码是ZXing库的核心功能之一。二维码可以存储大量的文本信息,如网址、联系信息、文本字符串等。在Java环境中,我们可以使用ZXing的`com.google.zxing.client.j2se.QRCodeWriter`类来创建一个...
return "二维码生成失败: " + e.getMessage(); } } ``` 3. **解决白边问题**:如上述代码所示,我们可以通过调整`margin`参数来控制二维码的白边大小。将其设置为较小的值(如1像素)可以有效地减少白边。但需要...
6. **异常处理**:在处理二维码生成和解析时,可能会遇到各种异常,例如无效的输入数据、无法读取的图像文件等,因此在编写代码时需要充分考虑异常处理,确保程序的健壮性。 这个简单的Java项目提供了一个学习和...
该工具类目前比较简单,只是实现了普通二维码、logo二维码、彩色二维码和二维码条形码解析几个功能。 根据此工具类可扩展生成LOGO+文字的二维码,暂时不需要没有封装。
总之,ZXing是一个强大且灵活的二维码生成和读取工具,它使得开发者能够轻松地在各种应用程序中实现二维码功能。通过学习和使用提供的源文件,可以深入了解ZXing的工作原理,并根据需求进行定制化开发。
ZXing(Zebra Crossing)是一个开源的、多平台的条形码读取库,它支持多种格式的条形码和二维码生成与解析。在本文中,我们将深入探讨如何使用ZXing来生成和解析二维码,以及如何利用QRcode.java类创建二维码名片。 ...
ZXing(Zebra Crossing)是Google开发的一个开源项目,它提供了多种格式的一维条形码和二维条形码的读取、生成能力,包括但不限于QR码、Data Matrix、UPC、EAN等。这个项目的名字“ZXing”实际上来源于斑马线的英文...
Unity ZXing.Net二维码生成SDK是一款专门针对Unity游戏引擎开发的二维码生成工具,它基于ZXing(Zebra Crossing)开源库,使得在Unity中创建、读取二维码变得简单易行。ZXing是一个强大的、多平台的一维和二维条码...
Google开源的ZXing(Zebra Crossing)库为开发者提供了跨平台的二维码和条形码生成与解码能力。本项目以ZXing为基础,结合自定义功能,如生成带有Logo的彩色二维码,为开发人员提供了更丰富的应用场景。 ZXing(又...
二维码生成和解析是现代信息化技术中的重要组成部分,尤其在移动互联网和物联网领域中广泛应用。Java作为一门跨平台的编程语言,提供了丰富的库和工具来支持二维码的生成与解析。本篇将详细介绍如何在Java环境中实现...
三、二维码生成 1. **创建`MultiFormatWriter`**:ZXing库提供了`MultiFormatWriter`类,可以用来编码各种数据类型为二维码。 2. **设置编码参数**:你可以指定二维码的错误纠正级别、版本等参数,以满足不同的...
这个项目提供了多种功能,包括扫描、解析和生成条形码及二维码。在本示例"ZXing二维码识别和生成的demo"中,我们将探讨如何使用ZXing库来实现二维码的读取和创建,以及如何在生成的二维码中嵌入自定义的logo。 1. *...
**标题:“com.google.zxing 二维码生成与解析”** **核心知识点:** 1. **ZXing库介绍**:ZXing,全称为“Zebra Crossing”,是Google开发的一个开源的、跨平台的条码读取库。它支持多种条码和二维码格式,包括QR...