利用ZXing生成和读取二维码

在日常生活中二维码的使用非常频繁,给我们带来了极大的方便,避免了许多不必要的输入,也减少了在输入过程中的错误。

刚学完利用ZXing生成二维码的简单例子,在此给出最基本的源码,关于ZXing的jar文件,自行查找。


生成二维码的最基本代码:

import java.io.File;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class CreateQRCode {

	public static void main(String[] args) {
		int width = 500;//生成图片的尺寸,单位px
		int height = 500;
		String format = "png";//生成图片的格式
		String content = "自己根据需求修改内容";
		
		/**
		 * 定义相关参数
		 */
		Map hints = new HashMap();
		hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");//内容字符编码
		hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);//二维码容错级别
		hints.put(EncodeHintType.MARGIN, 5);//生成图片内容据图片边沿尺寸
		
		
		try {
			
			/**
			 * 第二个参数是生成的二维码的类型
			 * 在此使用QRCode,除此之外还有许多其他标准
			 */
			BitMatrix bitMatrix = new MultiFormatWriter()
			.encode(content, BarcodeFormat.QR_CODE, width, height,hints);
			Path path = new File("D:/guyouda.png").toPath();//生成的图片存储路径
			MatrixToImageWriter.writeToPath(bitMatrix, format, path);
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		
		

	}

}

读取二维码的最基本代码:

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

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;

public class ReadQRCode {

	public static void main(String[] args) {
		
		/**
		 * 读取时的参数设置
		 */
		Map hints = new HashMap();
		hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
		
		try {
			
			//图片文件位置
			File file = new File("D:/guyouda.png");
			BufferedImage image = ImageIO.read(file);
			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
			
			MultiFormatReader reader = new MultiFormatReader();
			
			Result result = reader.decode(bitmap,hints);
			
			System.out.println("Result:"+result.toString());
			System.out.println("Text:"+result.getText());
			System.out.println("format:"+result.getBarcodeFormat());
		} catch (NotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}

}



生成的二维码:

利用ZXing生成和读取二维码_第1张图片


二维码读取结果:

利用ZXing生成和读取二维码_第2张图片








你可能感兴趣的:(Java)