二维码的生成和解码Java实现

涉及到的一些主要类库,方便大家下载: 二维码编码lib:Qrcode_swetake.jar(官网介绍 -- http://www.swetake.com/qr/index-e.html)二维码解码lib:qrcode.jar (官网介绍 -- http://sourceforge.jp/projects/qrcode/) Java二维码 生成二维码 QRCodeEncoderHandler.java ```java None

 java二维码解码 QRCodeDecoderHandler.java ```java
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;
import jp.sourceforge.qrcode.exception.DecodingFailedException;

/**
 * @blog http://zhblog.github.com/blog
 * @author zzh
 */
public class QRCodeDecoderHandler {

    /**
     * 解码二维码
     * @param imgPath
     * @return String
     */
    public String decoderQRCode(String imgPath) {

        // QRCode 二维码图片的文件
        File imageFile = new File(imgPath);

        BufferedImage bufImg = null;
        String decodedData = http://outofmemory.cn/code-snippet/82712/null;
        try {
            bufImg = ImageIO.read(imageFile);

            QRCodeDecoder decoder = new QRCodeDecoder();
            decodedData = new String(decoder.decode(new J2SEImage(bufImg)));
        } catch (IOException e) {
            system.out.println("Error: " + e.getmessage());
            e.printStackTrace();
        } catch (DecodingFailedException dfe) {
            System.out.println("Error: " + dfe.getMessage());
            dfe.printStackTrace();
        }
        return decodedData;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        QRCodeDecoderHandler handler = new QRCodeDecoderHandler();
        String imgPath = "zzh.png";
        String decoderContent = handler.decoderQRCode(imgPath);
        System.out.println("解析结果如下:");
        System.out.println(decoderContent);
        System.out.println("========decoder success!!!");
    }

    class J2SEImage implements QRCodeImage {
        BufferedImage bufImg;

        public J2SEImage(BufferedImage bufImg) {
            this.bufImg = bufImg;
        }

        public int getWidth() {
            return bufImg.getWidth();
        }

        public int getHeight() {
            return bufImg.getHeight();
        }

        public int getPixel(int x, int y) {
            return bufImg.getRGB(x, y);
        }

    }
}
赞 (0) 评论 分享 ()