Java--解析QRCode二维码(QRCode方式)

来源:互联网 发布:淘宝联盟域名要求 编辑:程序博客网 时间:2024/06/06 05:15

上篇博客我们一起学习了用QRCode的方式生成二维码,这节课学习用QRCode的方式的解析二维码。

        新建一个Java类,如下图所示。


         ReadQRCode.java类代码如下:

[html] view plain copy
  1. package com.qrcode;  
  2.   
  3. import java.awt.image.BufferedImage;  
  4. import java.io.File;  
  5. import java.io.IOException;  
  6.   
  7. import javax.imageio.ImageIO;  
  8.   
  9. import jp.sourceforge.qrcode.QRCodeDecoder;  
  10.   
  11. public class ReadQRCode {  
  12.     public static void main(String[] args) throws IOException{  
  13.         File file = new File("E:/code/qrcode.png");  
  14.         BufferedImage bufferedImage = ImageIO.read(file);  
  15.         QRCodeDecoder codeDecoder = new QRCodeDecoder();  
  16.         String result = new String(codeDecoder.decode(new MyQRCodeImage(bufferedImage)),"gb2312");  
  17.         System.out.println(result);  
  18.     }  
  19. }  

         其中codeDecoder.decode()中参数需要传入一个实现BufferedImage接口的类,我们新建MyQRCodeImage.java类,该类实现了QRCodeImage接口,如下图所示。


       MyQRCodeImage.java类的代码如下:

[html] view plain copy
  1. package com.qrcode;  
  2.   
  3. import java.awt.image.BufferedImage;  
  4.   
  5. import jp.sourceforge.qrcode.data.QRCodeImage;  
  6.   
  7. public class MyQRCodeImage implements QRCodeImage {  
  8.       
  9.     BufferedImage bufferedImage;  
  10.     public MyQRCodeImage(BufferedImage bufferedImage){  
  11.         this.bufferedImage = bufferedImage;  
  12.     }  
  13.       
  14.     @Override  
  15.     public int getHeight() {  
  16.         return bufferedImage.getHeight();  
  17.     }  
  18.   
  19.     @Override  
  20.     public int getPixel(int arg0, int arg1) {  
  21.         return bufferedImage.getRGB(arg0, arg1);  
  22.     }  
  23.   
  24.     @Override  
  25.     public int getWidth() {  
  26.         return bufferedImage.getWidth();  
  27.     }  
  28.   
  29. }  

       我们运行上面的那个方法,结果如下图所示。正常解析出了二维码当中的内容。

原创粉丝点击