上篇博客我们一起学习了用QRCode的方式生成二维码,这节课学习用QRCode的方式的解析二维码。
新建一个Java类,如下图所示。
![](https://img-blog.csdn.net/20170509233017096?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjQ1Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ReadQRCode.java类代码如下:
- package com.qrcode;
-
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
-
- import javax.imageio.ImageIO;
-
- import jp.sourceforge.qrcode.QRCodeDecoder;
-
- public class ReadQRCode {
- public static void main(String[] args) throws IOException{
- File file = new File("E:/code/qrcode.png");
- BufferedImage bufferedImage = ImageIO.read(file);
- QRCodeDecoder codeDecoder = new QRCodeDecoder();
- String result = new String(codeDecoder.decode(new MyQRCodeImage(bufferedImage)),"gb2312");
- System.out.println(result);
- }
- }
其中codeDecoder.decode()中参数需要传入一个实现BufferedImage接口的类,我们新建MyQRCodeImage.java类,该类实现了QRCodeImage接口,如下图所示。
![](https://img-blog.csdn.net/20170509232653926?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjQ1Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
MyQRCodeImage.java类的代码如下:
- package com.qrcode;
-
- import java.awt.image.BufferedImage;
-
- import jp.sourceforge.qrcode.data.QRCodeImage;
-
- public class MyQRCodeImage implements QRCodeImage {
-
- BufferedImage bufferedImage;
- public MyQRCodeImage(BufferedImage bufferedImage){
- this.bufferedImage = bufferedImage;
- }
-
- @Override
- public int getHeight() {
- return bufferedImage.getHeight();
- }
-
- @Override
- public int getPixel(int arg0, int arg1) {
- return bufferedImage.getRGB(arg0, arg1);
- }
-
- @Override
- public int getWidth() {
- return bufferedImage.getWidth();
- }
-
- }
我们运行上面的那个方法,结果如下图所示。正常解析出了二维码当中的内容。
![](https://img-blog.csdn.net/20170509233742097?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjQ1Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)