java二維碼生成讀取

二維碼再生活在無處不在,讓我們用最簡單的方法揭開二維碼的神祕面紗

在開始之前,我們需要先引入二維碼生成和讀取的jar包,這裏我用的是qrcodejar

可以直接去網上下載。

新建一個Java工程,在工程中添加一個lib目錄,把兩個Jar包放到lib目錄下,不要忘了add as libiar

java二維碼生成讀取

java二維碼生成讀取

在build.gradle中添加配置

compile fileTree(dir:'lib',include:['*.jar'])

(這裏我用的是gradle)

準備工作結束,馬上開始

生成二維碼

public class QRcodeTest { public static void main(String[] args) throws Exception{

Qrcode qrcode = new Qrcode();

qrcode.setQrcodeErrorCorrect('M');//糾錯等級(分爲L、M、H三個等級)

qrcode.setQrcodeEncodeMode('B');//N代表數字,A代表a-Z,B代表其它字符

qrcode.setQrcodeVersion(10);//版本

//生成二維碼中要存儲的信息

String qrData ="http://www.baidu.com"; //設置一下二維碼的像素

int width = 67+12*(10-1); int height = 67+12*(10-1);

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //繪圖

Graphics2D gs = bufferedImage.createGraphics();

gs.setBackground(Color.WHITE);

gs.setColor(Color.BLACK);

gs.clearRect(0, 0, width, height);//清除下畫板內容

//設置下偏移量,如果不加偏移量,有時會導致出錯。

int pixoff = 2; byte[] d = qrData.getBytes("gb2312"); if(d.length > 0 && d.length <120){ boolean[][] s = qrcode.calQrcode(d); for(int i=0;iint j=0;j

gs.fillRect(j*3+pixoff, i*3+pixoff, 3, 3);

}

}

}

}

gs.dispose();

bufferedImage.flush(); //設置要存儲的目錄(這裏存儲在本地)

ImageIO.write(bufferedImage, "png", new File("E:/code/qrcodebd.png"));

}

}

這樣就可以生成一張二維碼圖片,掃描二維碼,會跳轉到百度首頁。

二維碼圖片

public class MyQrCodeImage implements QRCodeImage {

BufferedImage bufferedImage; public MyQrCodeImage(BufferedImage bufferedImage) { this.bufferedImage = bufferedImage;

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

} public int getPixel(int arg0, int arg1) { return bufferedImage.getRGB(arg0, arg1);

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

}

}

讀取二維碼

public class ReadQrCode { public static void main(String[] args) throws IOException { File file = new File("E:/code/qrcodebd.png");

BufferedImage bufferedImage = ImageIO.read(file);

Qrcode qrcode = new Qrcode();

QRCodeDecoder codeDecoder = new QRCodeDecoder(); String result = new String(codeDecoder.decode(new MyQrCodeImage(bufferedImage)),"gb2312");

System.out.println(result);

}

}

讀取二維碼的內容爲http://www.baidu.com

原文:https://segmentfault.com/a/1190000015955485

相关文章