`
kesun_shy
  • 浏览: 486382 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

zxing实现二维码生成和解析

 
阅读更多

二维码的生成与解析。有多种途径。我选择用大品牌,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

 

 

  • 大小: 561 Bytes
6
0
分享到:
评论
2 楼 luoruiyuan 2016-04-11  
麻烦问一下 3.0  MatrixToImageWriter  为什么没有这个类呀?
1 楼 莫欺少年穷Java 2015-11-10  
Thank you

相关推荐

    Zxing二维码生成与解析

    总结,Zxing是一个强大且灵活的二维码生成和解析工具,适合各种应用场景,无论你是开发者还是爱好者,都可以通过Zxing轻松实现二维码的创建和读取。对于想要深入了解二维码技术或者在项目中集成二维码功能的读者来说...

    zxing3.3.1二维码生成

    这个“zxing3.3.1二维码生成”是一个针对二维码生成功能的特定版本,版本号为3.3.1。这个jar包包含了ZXing库的所有功能,便于开发者在项目中集成二维码生成的功能。 ZXing库支持多种类型的条码和二维码,包括但不...

    java使用谷歌zxing实现二维码生成读取

    `QRCode.java`可能包含一个自定义的类,用于简化二维码生成和读取的操作,比如提供一个方法同时处理生成和解码的过程。`QRCodeFormat.java`则可能是用来定义二维码的格式或者参数设置,如容错级别、编码模式等。 在...

    Google二维码生成(解析)zxing库Android

    Google二维码生成解析zxing库 Android 代码,可以实现二维码生成,亲测可用。 代码为2016年6月9日从GitHub下载的,版本为3.2.1 GitHub对应地址代码为: https://github.com/zxing/zxing jar包原始下载地址为:...

    zxing2.2 二维码的生成解析(java)

    在给定的“zxing2.2 二维码的生成解析(java)”主题中,我们将深入探讨ZXing库如何在Java环境中帮助开发者处理二维码的生成与解析。 1. **ZXing库介绍**: ZXing(读作“zebra crossing”)是由Google开发的一个多...

    C#使用ZXing识别二维码,条形码

    这个项目是针对C#编程语言的一个版本,即ZXing.NET,它为开发者提供了方便快捷的接口来识别和生成这两种编码。 **ZXing.NET库介绍** ZXing.NET是由Christian Schormann开发的,它是ZXing(Java版本)的C#移植,支持...

    ZXing生成二维码包

    二维码生成** 生成二维码是ZXing库的核心功能之一。二维码可以存储大量的文本信息,如网址、联系信息、文本字符串等。在Java环境中,我们可以使用ZXing的`com.google.zxing.client.j2se.QRCodeWriter`类来创建一个...

    zxing 二维码 调用实例,解决低版本 白边问题

    return "二维码生成失败: " + e.getMessage(); } } ``` 3. **解决白边问题**:如上述代码所示,我们可以通过调整`margin`参数来控制二维码的白边大小。将其设置为较小的值(如1像素)可以有效地减少白边。但需要...

    zxing二维码生成和解析代码

    6. **异常处理**:在处理二维码生成和解析时,可能会遇到各种异常,例如无效的输入数据、无法读取的图像文件等,因此在编写代码时需要充分考虑异常处理,确保程序的健壮性。 这个简单的Java项目提供了一个学习和...

    zxing彩色二维码工具类

    该工具类目前比较简单,只是实现了普通二维码、logo二维码、彩色二维码和二维码条形码解析几个功能。 根据此工具类可扩展生成LOGO+文字的二维码,暂时不需要没有封装。

    基于zxing的二维码生成源文件

    总之,ZXing是一个强大且灵活的二维码生成和读取工具,它使得开发者能够轻松地在各种应用程序中实现二维码功能。通过学习和使用提供的源文件,可以深入了解ZXing的工作原理,并根据需求进行定制化开发。

    zxing生成、解析二维码

    ZXing(Zebra Crossing)是一个开源的、多平台的条形码读取库,它支持多种格式的条形码和二维码生成与解析。在本文中,我们将深入探讨如何使用ZXing来生成和解析二维码,以及如何利用QRcode.java类创建二维码名片。 ...

    zxing实现二维码扫描

    ZXing(Zebra Crossing)是Google开发的一个开源项目,它提供了多种格式的一维条形码和二维条形码的读取、生成能力,包括但不限于QR码、Data Matrix、UPC、EAN等。这个项目的名字“ZXing”实际上来源于斑马线的英文...

    Unity ZXing.Net二维码生成SDK

    Unity ZXing.Net二维码生成SDK是一款专门针对Unity游戏引擎开发的二维码生成工具,它基于ZXing(Zebra Crossing)开源库,使得在Unity中创建、读取二维码变得简单易行。ZXing是一个强大的、多平台的一维和二维条码...

    使用zxing开发的二维码/条形码/带logo彩色二维码例子

    Google开源的ZXing(Zebra Crossing)库为开发者提供了跨平台的二维码和条形码生成与解码能力。本项目以ZXing为基础,结合自定义功能,如生成带有Logo的彩色二维码,为开发人员提供了更丰富的应用场景。 ZXing(又...

    二维码生成和解析

    二维码生成和解析是现代信息化技术中的重要组成部分,尤其在移动互联网和物联网领域中广泛应用。Java作为一门跨平台的编程语言,提供了丰富的库和工具来支持二维码的生成与解析。本篇将详细介绍如何在Java环境中实现...

    zxing3.3.0二维码扫描及二维码生成

    三、二维码生成 1. **创建`MultiFormatWriter`**:ZXing库提供了`MultiFormatWriter`类,可以用来编码各种数据类型为二维码。 2. **设置编码参数**:你可以指定二维码的错误纠正级别、版本等参数,以满足不同的...

    ZXing二维码识别和生成的demo

    这个项目提供了多种功能,包括扫描、解析和生成条形码及二维码。在本示例"ZXing二维码识别和生成的demo"中,我们将探讨如何使用ZXing库来实现二维码的读取和创建,以及如何在生成的二维码中嵌入自定义的logo。 1. *...

    com.google.zxing 二维码生成与解析

    **标题:“com.google.zxing 二维码生成与解析”** **核心知识点:** 1. **ZXing库介绍**:ZXing,全称为“Zebra Crossing”,是Google开发的一个开源的、跨平台的条码读取库。它支持多种条码和二维码格式,包括QR...

Global site tag (gtag.js) - Google Analytics