java 生成和解密二维码

来源:互联网 发布:windows 内存分析工具 编辑:程序博客网 时间:2024/06/01 12:28

jar包:qrcode.jar,Qrcode_swetake.jar

下载地址: http://download.csdn.net/detail/heyeweiwan/8707117


1生成二维码:

public class QRCodeEncoderHandler {    /**     * 生成二维码(QRCode)图片     * @param content     * @param imgPath     */     public void encoderQRCode(String content, String imgPath) {         try {              Qrcode qrcodeHandler = new Qrcode();             qrcodeHandler.setQrcodeErrorCorrect('M');             qrcodeHandler.setQrcodeEncodeMode('B');             qrcodeHandler.setQrcodeVersion(7);              System.out.println(content);             byte[] contentBytes = content.getBytes("UTF-8");              BufferedImage bufImg = new BufferedImage(140, 140,                     BufferedImage.TYPE_INT_RGB);              Graphics2D gs = bufImg.createGraphics();              gs.setBackground(Color.WHITE);             gs.clearRect(0, 0, 140, 140);              // 设定图像颜色> BLACK             gs.setColor(Color.BLACK);              // 设置偏移量 不设置可能导致解析出错             int pixoff = 2;             // 输出内容> 二维码             if (contentBytes.length > 0 && contentBytes.length < 120) {                 boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);                 for (int i = 0; i < codeOut.length; i++) {                     for (int j = 0; j < codeOut.length; j++) {                         if (codeOut[j][i]) {                             gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);                         }                     }                 }             } else {                 System.err.println("QRCode content bytes length = "                         + contentBytes.length + " not in [ 0,120 ]. ");             }              gs.dispose();             bufImg.flush();              File imgFile = new File(imgPath);              // 生成二维码QRCode图片             ImageIO.write(bufImg, "png", imgFile);          } catch (Exception e) {             e.printStackTrace();         }      }      /**     * @param args the command line arguments     */     public static void main(String[] args) {         String imgPath = "c:/Michael_QRCode.png";          String content = "爸爸妈妈告诉我";          QRCodeEncoderHandler handler = new QRCodeEncoderHandler();         handler.encoderQRCode(content, imgPath);          System.out.println("encoder QRcode success");     } }

2: 解密二维码

public static void main(String[] args) throws IOException {//if (args.length < 1) {//System.err.println("Usage: QRCodeDecoderCUIExample imageFilePath");//System.exit(1);//    }     QRCodeDecoder decoder = new QRCodeDecoder();     BufferedImage image  = ImageIO.read(new File("c:/Michael_QRCode.png"));     String decodedString = new String(decoder.decode(new J2SEImage(image))); decodedString = ContentConverter.convert(decodedString); System.out.println(decodedString);}

3.J2SEImage 类

class J2SEImage implements QRCodeImage {    BufferedImage image;     public J2SEImage(BufferedImage image) {        this.image = image;    }     public int getWidth() {        return image.getWidth();    }     public int getHeight() {        return image.getHeight();    }     public int getPixel(int x, int y) {        return image.getRGB(x, y);    }}


0 0
原创粉丝点击