1. 程式人生 > >菜鳥先飛之二維碼zxing解析

菜鳥先飛之二維碼zxing解析

前言 我在之前的文章中講了如何用js快速生成二維碼和怎麼用zxing工具來生成二維碼,我們的二維碼是生成了,但是我們怎麼去解析一個二維碼呢,接下來介紹用zxing解析二維碼
準備工作 需要準備的東西就和zxing生成二維碼一樣,請參考我的上一篇部落格。 傳送門: http://blog.csdn.net/happy_cloudlife/article/details/78864825
開始上程式碼 還是原來的java專案: 上程式碼:
package xin.shaojie.zxing;

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

import javax.imageio.ImageIO;

import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;

/** 
* @ClassName: ReadQRCode 
* @Description:  解析QRCode碼
* @author CloudLife
* @date 2017年12月21日 下午4:06:50 
*  
*/
public class ReadQRCode {

	public static void main(String[] args) {

		try {
			// 定義一個解析二維碼的物件
			MultiFormatReader formatReader = new MultiFormatReader();
			// 指定目標檔案
			File file = new File("D:/CloudLife.png");
			// 讀取目標檔案
			BufferedImage image = ImageIO.read(file);
			// 生成BinaryBitmap
			BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
			// 定義二維碼的引數
			HashMap hints = new HashMap<>();
			// 字符集
			hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
			//開始解析
			Result result = formatReader.decode(binaryBitmap, hints);
			//輸出解析結果
			System.out.println("解析結果:" + result.toString());
			System.out.println("二維碼的型別:" + result.getBarcodeFormat());
			System.out.println("二維碼的文字內容:" + result.getText());
			
		} catch (NotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


執行結果:
總結 每一次分享都是技術的沉澱,享受分享的樂趣