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

Zxing二维码 QR_CODE

阅读更多

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

使用core与javase包

代码如下:

 

 解析中文时注意修改 编码方式

package cn.wuhongbox.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.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.ByteMatrix;
import com.google.zxing.common.HybridBinarizer;

public class RQUtil
{
	private static final int BLACK = 0xff000000;
	private static final int WHITE = 0xFFFFFFFF;

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

		try
		{

			ByteMatrix byteMatrix = new MultiFormatWriter().encode(str,
					BarcodeFormat.QR_CODE, height, height);

			return toBufferedImage(byteMatrix);

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

			// 文件
			// ImageIO.write(image, "png", file);
		}
		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 matrix
	 * @return
	 */
	private static BufferedImage toBufferedImage(ByteMatrix 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) == 0 ? BLACK : WHITE);
			}
		}
		return image;
	}

	/**
	 * 解码 各类型条码
	 */
	public static String decodeRQ(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);

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

		String s = RQUtil.decodeRQ(file);

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

}

 

分享到:
评论
4 楼 isy 2015-05-20  
isy 写道
用的包比较老了,还没有EncodeHintType.MARGIN这个属性来修改边框大小

还是感谢楼主分享!
3 楼 isy 2015-05-20  
用的包比较老了,还没有EncodeHintType.MARGIN这个属性来修改边框大小
2 楼 isy 2015-05-20  
感谢分享!
1 楼 october_me 2013-06-18  
呵呵,不错,本来是来看一维码的,看完了发现还有二维码。学习了。

相关推荐

    zxing_DELHI2D_delphi二维码_ZXing_二维码_zxingdelphi7_

    ZXing库支持多种条码和二维码格式,如QR Code、Data Matrix、Aztec、PDF417等,可以进行快速准确的解码。"zxingdelphi7"可能表示这是ZXing库的一个特定版本,专门为Delphi 7设计,Delphi 7是该IDE的一个早期版本,但...

    2 QR_Code_labviewqr二维码_二维码识别_二维码_

    【标题】"2 QR_Code_labviewqr二维码_二维码识别_二维码_" 涉及到的主要技术是使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)进行二维码的读取和解析,这是NI公司推出的一种图形化编程语言,...

    zxing_dsp.rar_DSP zxing 二维码_ZXing _dsp_dsp二维码_二维码dsp

    本文主要探讨如何成功将ZXing二维码扫描库移植到DSP上,并在TI的CCS6集成开发环境中运行。 首先,我们需要理解DSP(Digital Signal Processor)的优势。DSP是一种专门用于处理数字信号的微处理器,其内部结构和指令...

    Android使用Zxing进行二维码(QR Code)的扫描,不使用ViewFinderView

    一个使用Google开源项目Zxing进行QR码解析的例程,不使用ViewFinderView作为扫描画面,扫面画面为纯xml编写,我写了注释,编码方式为GBK,不过Zxing有个缺点必须离二维码远一些程序才能识别二维码

    ZXingDemo_二维码识别_ZXing_android_

    1. **二维码/条形码识别**:ZXing库能够识别多种类型的条形码,包括EAN-13、UPC-A、Code 128、QR Code等,以及一维和二维条形码。 2. **自定义扫描界面**:开发者可以自定义扫描界面,调整扫描框大小、颜色,以及...

    二维码生成器_二维码_zxing.presentation_paidpi9_二维码生成器_

    二维码,全称为“Quick Response Code”,是一种二维条码,能够存储大量的信息,如文本、网址、联系信息等,并且可以通过手机摄像头快速扫描读取。在信息化时代,二维码被广泛应用在各种场景,如商品追溯、广告推广...

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

    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("扫描二维码"); integrator.setCameraId(0); // 使用后置摄像头 integrator.initiateScan(); ``` 5. **处理扫描结果*...

    aaaaaa.zip_QR码_ZXing _二维码_二维码扫描出网页

    在IT行业中,二维码(Quick Response Code,简称QR码)是一种二维条形码,它能够存储比传统一维条形码更多的信息,包括网址、文本、联系人信息等。ZXing,全称“Zebra Crossing”,是一款开源的、跨平台的二维码和...

    CSharp-QR-Code.rar_C# 二维码 源码_QR-CODE_QR识别_qr码 c#_site:www.pudn.c

    在IT行业中,二维码(QR Code)作为一种数据编码方式,已经成为数据交换、信息传递的重要工具。在C#编程语言中,实现二维码的生成和识别是一项常见的需求。本资源“CSharp-QR-Code.rar”提供了C#编写的二维码识别源...

    QR_Decoder_OV5640_QrDecode_qr单片机_stm32_二维码门禁_

    1. **二维码(Quick Response Code)**:二维码是一种二维条形码,能够存储大量的数据,如文本、网址、联系信息等。其编码规则严谨,纠错能力强,广泛应用于各种场景,如门禁系统、产品追溯、移动支付等。 2. **OV...

    QR.zip_LABVIEW 二维码_labview qr code_labview qrcode_labview二维码_qr

    在这个"QR.zip_LABVIEW 二维码_labview qr code_labview qrcode_labview二维码_qr"项目中,重点是利用LabVIEW来实现二维码的生成。 二维码(Quick Response Code,简称QR码)是一种二维条形码,能够存储更多的信息...

    zxing二维码jar包

    ZXing,全称为“Zebra Crossing”,是一款开源的、跨平台的条码处理库,它支持多种条码格式,包括二维码(QR Code)的生成与解码。在Java开发中,ZXing通常以一个名为`zxing.jar`的库文件形式提供,便于开发者集成到...

    Zxing_ZXing_android_

    Zxing支持多种编码格式,包括但不限于QR码、Data Matrix、Aztec、UPC-A、EAN-13、Code 39、Code 128等。这些编码格式广泛应用于数据交换、链接跳转、产品追踪等领域。Zxing通过摄像头捕获图像,然后利用图像处理技术...

    tiaoxingma.rar_c++二维码生成_二维码_二维码 生成_二维码生成_二维码读取

    二维码(Quick Response Code,简称QR Code)是一种矩阵式二维条码,由日本Denso Wave公司于1994年发明。它能存储大量的文字、数字、网址、图片等信息,通过扫描设备可以快速读取和解码。 2. **C++二维码生成** ...

    生成二维码_labview二维码_labviewqrcode_二维码_

    二维码(Quick Response Code)是一种二维条码,能存储大量数据,如网址、文本、联系信息等,且读取速度快,应用广泛。 生成二维码在LabVIEW中通常涉及到调用外部库函数或模块,因为LabVIEW自身并不内置二维码生成...

    app.zip_ZXing _android_zxing扫描app_zxing扫码器app_二维码

    ZXing提供了多种条码和二维码的编码与解码能力,包括但不限于QR码、Code 128、EAN-13等常见格式。它通过相机捕获图像并进行解析,从而获取隐藏在条码或二维码中的数据。在Android平台上,ZXing通常通过集成`...

    zxing二维码扫描(已简化)

    二维码(QR Code)是一种二维条形码,能够存储大量的信息,如文字、网址、联系信息等,便于快速读取和分享。ZXing库提供了从图像中识别和解码二维码的功能,这在移动应用开发中非常常见,比如制作扫描功能的APP。 ...

    QR.rar_DEMO_二维码识别_扫描二维码java_条码demo_条码识别

    本项目"QR.rar_DEMO_二维码识别_扫描二维码java_条码demo_条码识别"是一个基于Java实现的二维码和条码处理示例,旨在帮助开发者理解和实践相关功能。 首先,我们来探讨二维码识别。二维码,全称Quick Response Code...

    JAVA生成Zxing二维码

    public class QRCodeReader { public static void main(String[] args) { File inputFile = new File("input.png"); try { BufferedImage image = ImageIO.read(inputFile); LuminanceSource source = new ...

Global site tag (gtag.js) - Google Analytics