`
hongbo.wu
  • 浏览: 93770 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Zxing2.2 生成QR二维码和一维码(条码)

阅读更多

http://code.google.com/p/zxing/downloads/list下载zxing压缩包Zxing-2.2,

使用core包

代码如下:

 

package cn.wuhongbox.common.javaQR;

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

public class QRUtil
{
	private static final String CODE = "utf-8";
	private static final int BLACK = 0xff000000;
	private static final int WHITE = 0xFFFFFFFF;

	/**
	 * 生成RQ二维码
	 * 
	 * @author wuhongbo
	 * @param str
	 *            内容
	 * @param height
	 *            高度(px)
	 * 
	 */
	public static BufferedImage getRQ(String str, Integer height)
	{
		if (height == null || height < 100)
		{
			height = 200;
		}

		try
		{
			// 文字编码
			Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
			hints.put(EncodeHintType.CHARACTER_SET, CODE);

			BitMatrix bitMatrix = new MultiFormatWriter().encode(str,
					BarcodeFormat.QR_CODE, height, height, hints);

			return toBufferedImage(bitMatrix);

			// 输出方式
			// 网页
			// ImageIO.write(image, "png", response.getOutputStream());

			// 文件
			// ImageIO.write(image, "png", file);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 生成一维码(128)
	 * 
	 * @author wuhongbo
	 * @param str
	 * @param width
	 * @param height
	 * @return
	 */
	public static BufferedImage getBarcode(String str, Integer width,
			Integer height)
	{

		if (width == null || width < 200)
		{
			width = 200;
		}

		if (height == null || height < 50)
		{
			height = 50;
		}

		try
		{
			// 文字编码
			Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
			hints.put(EncodeHintType.CHARACTER_SET, CODE);

			BitMatrix bitMatrix = new MultiFormatWriter().encode(str,
					BarcodeFormat.CODE_128, width, height, hints);

			return toBufferedImage(bitMatrix);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 生成二维码,写到文件中
	 * 
	 * @author wuhongbo
	 * @param str
	 * @param height
	 * @param file
	 * @throws IOException
	 */
	public static void getRQWriteFile(String str, Integer height, File file)
			throws IOException
	{
		BufferedImage image = getRQ(str, height);
		ImageIO.write(image, "png", file);
	}

	/**
	 * 生成一维码,写到文件中
	 * 
	 * @author wuhongbo
	 * @param str
	 * @param height
	 * @param file
	 * @throws IOException
	 */
	public static void getBarcodeWriteFile(String str, Integer width,
			Integer height, File file) throws IOException
	{
		BufferedImage image = getBarcode(str, width, height);
		ImageIO.write(image, "png", file);
	}

	/**
	 * 转换成图片
	 * 
	 * @author wuhongbo
	 * @param matrix
	 * @return
	 */
	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;
	}

	/**
	 * 解码(二维、一维均可)
	 */
	public static String read(File file)
	{

		BufferedImage image;
		try
		{
			if (file == null || file.exists() == false)
			{
				throw new Exception(" File not found:" + file.getPath());
			}

			image = ImageIO.read(file);

			LuminanceSource source = new BufferedImageLuminanceSource(image);
			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

			Result result;

			// 解码设置编码方式为:utf-8,
			Hashtable hints = new Hashtable();
			hints.put(DecodeHintType.CHARACTER_SET, "utf-8");

			result = new MultiFormatReader().decode(bitmap, hints);

			return result.getText();

		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

		return null;
	}

	public static void main(String[] args) throws Exception
	{
		File file = new File("c://1.png");
		// RQUtil.getRQwriteFile("吴宏波中华人民共和国", 200, file);

		// code39 大写字母、数字、-、
		// code128 
		QRUtil.getBarcodeWriteFile("12345678900-J_j", null,null, file);

		System.out.println("-----成生成功----");
		System.out.println();

		String s = QRUtil.read(file);

		System.out.println("-----解析成功----");
		System.out.println(s);
	}

}

 

分享到:
评论
4 楼 fxltsbl 2017-07-04  
楼主,条码解析总是报com.google.zxing.NotFoundException,怎么样才能解析出来呢?

用楼主的代码貌似不行,怎么才能提高识别率呢?有没有类似的方法,指点下思路,感谢
3 楼 sundayfleet 2013-10-11  
我也是用Zxing2.2,下载官网上最新的版本。请问代码里的
import com.google.zxing.client.j2se.BufferedImageLuminanceSource; 在core里面没有j2se的包啊,请赐教!
2 楼 hongbo.wu 2013-08-21  
Function 写道
2.2版本core文件夹下已无 build.xml 楼主如何获取core.jar的?可否赐教


有源码呀,打包就行了
1 楼 Function 2013-06-13  
2.2版本core文件夹下已无 build.xml 楼主如何获取core.jar的?可否赐教

相关推荐

    ireport生成一维码和google zxing二维码

    ZXing,意为“条形码扫描”,是一个强大的工具,支持多种一维码和二维码的生成和解码。其核心功能包括编码(生成二维码或条形码图像)和解码(识别图像中的条形码)。ZXing提供了多种语言的API,包括Java,便于...

    java二维码解析 zxing2.2及QRCode实现

    ZXing,通常被称为“条形码扫描器”,是一个开源项目,提供多种格式的一维和二维条码的读取和编写能力。ZXing 2.2版本是一个相对旧但仍然广泛使用的版本,它支持包括QR码在内的多种编码格式。在Java环境中,你可以...

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

    ZXing,全称为“Zebra Crossing”,是一款开源的、用于读取和生成多种一维码和二维码的Java库。在给定的“zxing2.2 二维码的生成解析(java)”主题中,我们将深入探讨ZXing库如何在Java环境中帮助开发者处理二维码的...

    zxing C++ 生成识别二维码库 32位/64位静态编译库

    ZXing(Zebra Crossing)是一个开源的、多平台的一维和二维条码读取库,支持多种编码格式,包括常见的QR码和条形码。在C++开发中,使用ZXing库可以方便地集成二维码的生成和识别功能。本资源提供了ZXing库的32位和64...

    google.zxing自定义生成微信二维码.rar

    它支持多种条形码和二维码格式,包括QR Code,这对于生成微信二维码非常有用。QR Code能够存储大量的文本信息,如网址、联系人信息、短信等,适用于各种场景。 首先,我们来看`QrCodeCreateUtil.java`这个文件。这...

    JAVA 二维码生成 自己封装ZXing2.2.jar

    在本项目中,开发者已经对ZXing 2.2版本进行了封装,简化了使用流程,使得在Java项目中生成和解析二维码变得更加方便。 首先,我们要理解ZXing库的核心功能。ZXing提供了多种类和方法,用于二维码的生成和解码。在...

    二维码和一维码论文

    一维码,通常指条形码,是一种将宽度不等的黑白条纹和空白组合,用来表示数据的图形符号系统。一维码最早由乔治·斯蒂芬森于1949年提出,经过几十年的发展,现在最常见的一维码类型有EAN(欧洲物品编号)和UPC(统一...

    zxing生成二维码,图片Base64编码

    ZXing(Zebra Crossing)是Google开发的一个开源项目,它提供了多种格式的一维码和二维码的读取与生成功能。在这个场景中,我们将讨论如何使用ZXing库生成二维码,并且如何将生成的二维码图片进行Base64编码。 首先...

    基于zxing一维码二维码解析

    ZXing(Zebra Crossing)是一个开源的、多平台的条码读取库,支持多种一维码和二维码的解析与生成。本项目专注于利用ZXing进行一维码和二维码的解析,将扫描到的编码内容转化为易于理解的字符串形式。 ### 1. ZXing...

    Zxing生成一维码二维码

    Zxing,全称为“ZXing,Zebra Crossing”,是一个开源的、多功能的条形码和二维码处理库。这个库能够生成、读取多种格式的一维码和二维码,包括但不限于QR码、Code 128、EAN-13等。在Android开发中,Zxing常被用于...

    Zxing C#生成条码和二维码

    ZXing,全称“Zebra Crossing”,是一个强大的、开源的图像处理库,用于读取和生成多种1D(一维)和2D(二维)条码。这个库最初是用Java编写的,但通过.NET平台的跨语言兼容性,C#开发者也能利用ZXing的强大功能。 ...

    Zxing二维码一维码扫描生成Android源码

    在Android开发中,Zxing(ZXing,发音同"zebra crossing",斑马线)是一个开源项目,它提供了一套全面的二维码和一维条形码读取库。这个项目由Google贡献并维护,旨在简化移动设备上的条码扫描过程。在本项目中,...

    利用ZXING生成简易二维码

    二维码,全称是“Quick Response Code”,即快速响应码,是一种二维条形码技术,能够存储大量的信息,如文本、网址、联系信息等,并且可以通过手机等设备快速读取。ZXing,又称“Zebra Crossing”,是一个开源的、跨...

    使用Java zxing开发的二维码 带logo彩色二维码

    它支持多种二维码和条形码格式的生成和扫描,包括QR Code、Code 128、UPC-A等。ZXing提供了Java、Android以及其他语言的版本,方便开发者集成到不同的项目中。 **生成带logo的彩色二维码** 1. **二维码编码**: 首先...

    ZXing生成二维码包

    ZXing支持多种条码格式,包括一维条码(如EAN-13,UPC-A)和二维条码(如QR码,Data Matrix)。在本案例中,我们主要关注的是ZXing在生成和解析二维码方面的应用。 **1. 二维码生成** 生成二维码是ZXing库的核心...

    ZXing2.2.jar

    总的来说,ZXing是一个强大的条码和二维码处理工具,通过`core-2.2.jar`和`javase-2.2.jar`这两个JAR文件,开发者可以轻松地在Java环境中实现条码和二维码的生成与读取,极大地提升了应用程序的功能性和用户体验。...

    使用zxing识别一幅包含多个二维码的图片

    ZXing(Zebra Crossing),又称“条形码解码库”,是一个开源项目,提供了多种格式的一维和二维条码读取功能,包括二维码。本篇文章将深入探讨如何使用ZXing来识别一幅包含多个二维码的图片。 首先,我们需要理解...

    android二维码条形码(一维码)生成、扫描和解析

    本篇文章将详细讲解如何在Android应用中实现二维码和一维码(条形码)的生成、扫描以及解析。 首先,我们要理解二维码和一维码的基本概念。二维码是一种二维条形码,可以存储更多的信息,如网址、文本、联系人信息...

    zxing2.2.jar

    ZXing库被广泛应用于各种项目中,包括移动应用、服务器端脚本以及桌面应用等,用于处理一维条形码(如EAN、UPC)和二维条形码(如QR Code、Data Matrix)。ZXing2.2是该库的一个特定版本,针对Java环境进行了优化,...

    Python zxing 库(条形码二维码识别)

    Python ZXing 库是将Java版ZXing(Zone Xing)库与Python结合的一个项目,主要功能在于处理图像中的条形码和二维码识别。ZXing,又称为“条形码扫描器”,是一个开源的、多平台的二维码和一维条形码读取库。在Python中...

Global site tag (gtag.js) - Google Analytics