首页>代码>java qr二维条码生成器>/QREncodeAndDecode/src/QRGenernate.java
import java.awt.image.BufferedImage;
import java.io.File;
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.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class QRGenernate {

	public void Encode(String contents, int width, int height, String imgPath) {
		Hashtable<Object, Object> hints = new Hashtable<Object, Object>();

		hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
		hints.put(EncodeHintType.CHARACTER_SET, "GBK");
		try {
			BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
					BarcodeFormat.QR_CODE, width, height, hints);

			MatrixToImageWriter
					.writeToFile(bitMatrix, "png", new File(imgPath));

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

	public String Decode(String imgPath) {
		BufferedImage image = null;
		Result result = null;
		try {
			image = ImageIO.read(new File(imgPath));
			if (image == null) {
				System.out.println("the decode image may be not exit.");
			}
			LuminanceSource source = new BufferedImageLuminanceSource(image);
			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

			Hashtable<Object, Object> hints = new Hashtable<Object, Object>();
			hints.put(DecodeHintType.CHARACTER_SET, "GBK");
			result = new MultiFormatReader().decode(bitmap, hints);
			return result.getText();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public enum WifiCipherType {
		WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID
	}

	public static void main(String args[]) {
		//fileName
		String imgPath = "result.png";

		String contents = "测试abc";
		int width = 300, height = 300;
		QRGenernate handler = new QRGenernate();
		//create pic
		handler.Encode(contents, width, height, imgPath);

		System.out.println("SUCCESS to generate QRcode");
		
		//analysis pic,get data
		String result = handler.Decode("result.png");
		System.out.println(result);
	}
}
最近下载更多
訾政阳2  LV1 6月13日
zxh2023  LV1 2023年6月3日
haoyunbin  LV1 2023年3月15日
wyx065747  LV67 2021年7月9日
八爪鱼123  LV1 2020年5月22日
CxlyboSoft  LV6 2020年2月27日
未曾想到命运如此坎坷  LV2 2020年2月23日
广西吴彦祖  LV6 2020年1月13日
myzczx  LV25 2020年1月3日
15838634741  LV18 2019年11月30日
最近浏览更多
dapeng0011  LV15 7月17日
訾政阳2  LV1 6月13日
訾政阳  LV1 6月13日
暂无贡献等级
dzlwindy  LV8 2023年7月11日
zxh2023  LV1 2023年6月3日
haoyunbin  LV1 2023年3月15日
yydsod  LV1 2022年6月5日
Dominick  LV14 2022年5月25日
1306878374  LV13 2022年2月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友