本文是我在慕課網學習以後的成果,感謝慕課網的老師。詳細教程可參考 http://www.imooc.com/learn/531
關於二維碼,先簡單的介紹下(摘自百度百科):
在代碼編制上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,經過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。在許多種類的二維條碼中,經常使用的碼制有:Data Matrix,MaxiCode, Aztec,QR Code, Vericode,PDF417,Ultracode,Code 49,Code 16K等,QR Code碼是1994年由日本DW公司發明。QR來自英文「Quick Response」的縮寫,即快速反應的意思,源自發明者但願QR碼可以讓其內容快速被解碼。QR碼最多見於日本、韓國;併爲目前日本最流行的二維空間條碼。但二維碼的安全性也正備受挑戰,帶有惡意軟件和病毒正成爲二維碼普及道路上的絆腳石。html
接下來咱們要作的就是使用QRcodeAPI來完成咱們的二維碼生成程序:java
1.首先咱們要獲取QRcode的Jar包:下載地址: http://www.swetake.com/qrcode/java/qr_java.html (點擊tar.gz文件便可)
而後咱們去lib文件下將QRcode.jar導入咱們的項目。安全
2.開始咱們的編碼工做。(首先介紹下二維碼是有糾錯能力,其有四個等級:L M Q H,通常使用M等級,注意若是你想生成的二維碼是個網頁連接,必須加上 http:/,不然掃碼出來的只是你的url,例如 www.baidu.com 生成的二維碼,掃描出來的結果就是這個url字符串而不會跳轉到百度首頁)工具
package com.smart.controller; import com.swetake.util.Qrcode; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; public class Gennerator { /** * 使用QRcode生成二維碼 * @param args */ public static void main(String[] args) throws Exception{ Qrcode x = new Qrcode(); x.setQrcodeErrorCorrect('M');//設置糾錯等級 x.setQrcodeEncodeMode('B');//設置編碼格式 x.setQrcodeVersion(7);//設置版本(版本有多種,感興趣的能夠去研究二維碼的發展歷程,這裏咱們選擇第七版本) String qrData = "http://www.baidu.com"; int width = 67 + 12*(7-1);//67+12*(版本號-1) int height = 67+ 12*(7-1); int pixoff = 2;//設置偏移量 byte[] d = qrData.getBytes("gb2312"); BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics2D gs =bufferedImage.createGraphics();//使用java的畫圖工具 gs.setBackground(Color.white); gs.setColor(Color.black);//設置白底黑字 gs.clearRect(0,0,width,height); if (d.length > 0 && d.length < 120) { boolean[][] s = x.calQrcode(d); for (int i = 0; i < s.length; i++) { for (int j = 0; j < s.length; j++) { if (s[j][i]) { gs.fillRect(j * 3+pixoff, i * 3+pixoff, 3, 3);//根據QRcode規則填充黑白點 } } } } gs.dispose(); bufferedImage.flush();//釋放資源 ImageIO.write(bufferedImage,"png",new File("D:/qrcode.png"));//生成二維碼,格式 png,文件地址 } }
生成的二維碼以下:
掃一下試試吧!學習