`
iaiai
  • 浏览: 2197005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zxing 生成/解析 一/二维码

    博客分类:
  • J2EE
 
阅读更多
在http://code.google.com/p/zxing/下载zxing压缩包(我用的Zxing-1.7)

附件是我把1.7源码打的一个jar包

封装成一个类.
ImgUtil.java
package com.iaiai;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
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.Reader;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
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;

/**
 * 
 * <p>
 * Title: ImgUtil.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-9-30
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class ImgUtil {

	private static final int BLACK = 0xff000000;
	private static final int WHITE = 0xFFFFFFFF;

	/**
	 * 读取一维和二维码
	 * 
	 * @param path
	 *            文件地址,全路径
	 * @return
	 */
	public static String read(String path) {
		return read(path, "UTF-8");
	}

	/**
	 * 读取一维和二维码
	 * 
	 * @param path
	 *            文件地址,全路径
	 * @param coding
	 *            文字编码
	 * @return
	 */
	public static String read(String path, String coding) {
		try {
			Reader reader = new MultiFormatReader();
			File file = new File(path);
			BufferedImage image;

			image = ImageIO.read(file);
			if (image == null) {
				return null;
			}
			LuminanceSource source = new BufferedImageLuminanceSource(image);
			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
			Result result;
			Hashtable hints = new Hashtable();
			hints.put(DecodeHintType.CHARACTER_SET, coding);
			// 解码设置编码方式为:utf-8
			result = new MultiFormatReader().decode(bitmap, hints);
			String resultStr = result.getText();
			return resultStr;

		} catch (Exception ex) {
			return null;
		}
	}

	/**
	 * 生成1维码图片
	 * 
	 * @param path
	 *            文件地址,全路径
	 * @param content
	 *            内容
	 */
	public static void write1D(String path, String content) {
		write1D(path, content, "png", 200, 100);
	}

	/**
	 * 生成1维码图片
	 * 
	 * @param path
	 *            文件地址,全路径
	 * @param content
	 *            内容
	 * @param suffix
	 *            图片后缀
	 * @param imgWidth
	 *            图片宽
	 * @param imgHeight
	 *            图片高
	 */
	public static void write1D(String path, String content, String suffix,
			int imgWidth, int imgHeight) {
		int codeWidth = 3 + (7 * 6) + 5 + (7 * 6) + 3;
		codeWidth = Math.max(codeWidth, imgWidth);
		try {
			BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
					BarcodeFormat.CODE_128, codeWidth, imgHeight, null);
			MatrixToImageWriter.writeToFile(bitMatrix, suffix, new File(path));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 生成2维码图片
	 * 
	 * @param path
	 *            文件地址,全路径
	 * @param content
	 *            文字内容,不能为空
	 */
	public static void write2D(String path, String content) {
		write2D(path, content, "png", "UTF-8", 200, 200);
	}

	/**
	 * 生成2维码图片
	 * 
	 * @param path
	 *            文件地址,全路径
	 * @param content
	 *            文字内容,不能为空
	 * @param suffix
	 *            生成图片后缀
	 * @param coding
	 *            编码
	 * @param imgWidth
	 *            图片宽
	 * @param imgHeight
	 *            图片高
	 */
	public static void write2D(String path, String content, String suffix,
			String coding, int imgWidth, int imgHeight) {
		try {
			BitMatrix byteMatrix;
			Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
			hints.put(EncodeHintType.CHARACTER_SET, coding); // 文字编码。
			byteMatrix = new MultiFormatWriter().encode(content,
					BarcodeFormat.QR_CODE, imgWidth, imgHeight, hints);
			File file = new File(path);

			BufferedImage image = toBufferedImage(byteMatrix);
			ImageIO.write(image, suffix, file);

			// QRCodeWriter writer = new QRCodeWriter();
			// BitMatrix bitMatrix = null;
			// try {
			// bitMatrix = writer.encode("姓名:张三,性别:男,年龄:25,籍贯:中国北京",
			// BarcodeFormat.QR_CODE, 300, 300);
			// MatrixToImageWriter.writeToFile(bitMatrix, "png", new
			// File("D://test.png"));
			// } catch (WriterException e) {
			// e.printStackTrace();
			// } catch (IOException e) {
			// e.printStackTrace();
			// }
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static BufferedImage toBufferedImage(BitMatrix matrix) {
		int width = matrix.getWidth();
		int height = matrix.getHeight();
		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_ARGB);
		for (int x = 0; x < width; x++) {
			for (int y = 0; y < height; y++) {
				image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
			}
		}
		return image;
	}

}


下面是测试类:
package com.iaiai;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
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.Reader;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;

/**
 * 
 * <p>
 * Title: Iaiai.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-9-30
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class Iaiai {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ImgUtil.write2D("D:/test.png", "姓名:丸子,性别:男,年龄:未知,籍贯:河北石家庄");
		System.out.println(ImgUtil.read("D://test.png"));
		
		ImgUtil.write1D("d:/test1.png", "122222");	//1维码必须是数字,不能为中文
		System.out.println(ImgUtil.read("D:/test1.png"));
	}

}


下面是生成的两个图片:

  • 大小: 1.1 KB
  • 大小: 504 Bytes
分享到:
评论
8 楼 xiuxiu123 2012-09-10  
请问大神们 识别效率改如何解决,有些识别需要花费很长时间的?
7 楼 zbhcit 2012-08-29  
你好,请教一下android如何解析二维码图片,不是通过扫描,我做了一个例子,有些可以解析,有些会报com.google.zxing.FormatException,不知道楼主有么接触过???
6 楼 qinyonghui 2012-05-04  
你好,你能够贴上解析一/二维码的代码吗,我现在要通过这些一二维码的图片来解析他们里面的内容,谢谢,qinyonghui20@qq.com
5 楼 iaiai 2012-03-22  
cokepanm 写道
你好,我加了你的zxing.jar后说缺
java.lang.NoClassDefFoundError: java.awt.image.BufferedImage

你看好了,我文章是放在j2ee下,不是放在android下的.....android下没BufferedImage这个类
4 楼 cokepanm 2012-03-21  
你好,我加了你的zxing.jar后说缺
java.lang.NoClassDefFoundError: java.awt.image.BufferedImage
3 楼 iaiai 2012-02-01  
陈文景 写道
请问你的代码是 把二维码图片解析成字符串吗   求指点

生成读取都可以
2 楼 小杨学JAVA 2012-02-01  
可以发一份zxing的源码吗,我下的么有com.google.zxing.client.j2se.BufferedImageLuminanceSource;
1 楼 陈文景 2011-12-07  
请问你的代码是 把二维码图片解析成字符串吗   求指点

相关推荐

    zxing生成、解析二维码

    在本文中,我们将深入探讨如何使用ZXing来生成和解析二维码,以及如何利用QRcode.java类创建二维码名片。 1. **生成二维码** - **ZXing API介绍**:ZXing提供了Java API,可以方便地集成到各种项目中。主要的类有`...

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

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

    通过谷歌zxing 生成\解析 二维码

    在使用ZXing生成和解析二维码时,我们需要了解以下几个关键概念和技术: 1. **生成二维码**: - **MatrixToImageWriter**: 这是ZXing库中的一个类,用于将二维码的数据矩阵(一个二维的布尔值数组)转换为图像文件...

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

    总之,使用ZXing开发的二维码/条形码/带logo彩色二维码例子是一个实用的项目,它扩展了ZXing的基本功能,增加了视觉吸引力和品牌识别度。对于开发者来说,掌握这样的技术可以提升应用程序的用户体验,特别是在市场...

    Zxing二维码生成与解析

    1. 使用Zxing生成二维码 在Java环境中,我们可以使用Zxing的`MultiFormatWriter`和`BitMatrix`类来生成二维码。首先,我们需要将要编码的数据转换为字节数组,然后调用`MultiFormatWriter.encode()`方法生成`...

    java生成/解析二维码两种方式

    在IT行业中,二维码作为一种高效的信息编码方式,广泛应用于各种场景,如链接分享、电子票务、数据传输等。Java作为一款流行的编程语言,...通过理解并运用上述方法,你可以轻松地生成和解析二维码,满足各种实际需求。

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

    2. **生成二维码**:使用ZXing生成二维码的代码示例如下: ```java import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import ...

    ZXing生成二维码包

    在本案例中,我们主要关注的是ZXing在生成和解析二维码方面的应用。 **1. 二维码生成** 生成二维码是ZXing库的核心功能之一。二维码可以存储大量的文本信息,如网址、联系信息、文本字符串等。在Java环境中,我们...

    zxing二维码/条形码扫描

    ZXing(Zebra Crossing)是一个开源的、多平台的条形码和二维码处理库,它提供了扫描、解码以及生成二维码和条形码的能力。在移动应用开发中,ZXing通常用于实现二维码/条形码扫描功能,为用户提供便捷的数据交换...

    Zxing生成与解析二维码

    在Java中使用Zxing生成二维码,首先需要将Zxing库添加到项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;core&lt;/artifactId&gt; ...

    使用google-zxing 生成二维码的简单小实例

    在IT行业中,生成二维码是一种...总之,ZXing库提供了一个强大的工具集,使得开发者能够轻松地在各种应用中实现二维码的生成和解析。无论是在移动应用、网站还是桌面程序中,ZXing都能帮助你实现高效的数据交换功能。

    Java实现的生成二维码和解析二维码URL操作示例

    Java 实现生成二维码和解析二维码 URL 操作示例 Java 是一种广泛使用的...Java 实现生成二维码和解析二维码 URL 操作示例提供了一个完整的解决方案,涵盖了生成二维码、解析二维码和文件读写操作等多个方面的内容。

    C# ZXing.Net 生成二维码支持中文Demo

    C#作为.NET框架的主要编程语言,同样可以通过各种库来实现二维码的生成与解析。本文将深入探讨如何使用ZXing.Net库在C#中创建支持中文的二维码,并提供一个简易的Demo示例。 ZXing(Zebra Crossing)是一个开源的、...

    Google zxing 二维码生成

    在Java工程中使用ZXing生成二维码,首先需要将库的依赖引入项目。这里提到的"com文件夹"包含了ZXing库的Java源代码,解压后将其放入项目的`src`目录下,意味着开发者可以直接使用这些源代码,而无需通过Maven或...

    Zxing生成的AES加密二维码

    这个“Zxing生成的AES加密二维码”示例展示了如何结合这两者,即使用强大的AES(Advanced Encryption Standard)加密技术和Zxing(ZXing,意为“条形码零知识”)二维码库来确保数据的安全传输。下面我们将深入探讨...

    使用zxing生成解析二维码的实例

    在Java环境中,ZXing提供了方便的API供开发者使用,使得生成和解析二维码变得简单易行。在这个实例中,我们将探讨如何使用ZXing 2.2版本的jar包来实现二维码的生成与解析。 首先,我们需要导入ZXing的依赖。如果你...

    利用ZXING生成简易二维码

    在标题“利用ZXING生成简易二维码”中,提到的核心知识点是使用ZXing库来创建二维码。ZXing库提供了Java、Android以及命令行工具等多种方式来操作二维码。生成二维码的基本步骤包括: 1. **配置ZXing**: 首先,你...

    JAVA生成Zxing二维码

    在Java环境中,使用Zxing库可以方便地创建和解析二维码。以下将详细介绍如何使用Java和Zxing实现二维码的生成与读取。 1. **安装Zxing库** 首先,你需要在项目中引入Zxing库。如果你使用的是Maven,可以在`pom.xml...

    zxing3.3.1二维码生成

    6. 生成和解码:ZXing库同时支持生成和解码功能,这意味着你不仅可以使用它创建二维码,还可以读取并解析二维码中的数据。 总的来说,ZXing是一个强大的条码和二维码处理工具,3.3.1版本的发布意味着它已经经过了多...

    SpringBoot整合ZXing生成和解析二维码详解含源码(值得珍藏)

    在Spring Boot应用中整合ZXing库,您可以轻松地生成和解析二维码,这在现代的数字化环境中具有广泛的用途。ZXing,全称为“Zebra Crossing”,是一个开源的条码处理库,支持多种一维和二维条码,包括QR码。QR码...

Global site tag (gtag.js) - Google Analytics