二維碼簡介
二維條碼/二維碼(2-dimensional bar code,QRCode)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理:它具有條碼技術的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化點。
Java生成QRCode
Zebra Crossing(ZXing)是一個可以在大多數平台(Android、JavaSE、iPhone、RIM、Symbian)中用來生成、解析QR碼的開源庫。而QRGen是在ZXing基礎上開發,這個庫使得利用Java生成QR碼變為小菜一碟。它需要依賴ZXing,所以生成圖案時你同時需要ZXing和QRGen的jar包。
在pom.xml添加qrcode的依賴:
<dependency>
<groupId>net.glxn</groupId>
<artifactId>qrgen</artifactId>
<version>1.4</version>
</dependency>
然後在Maven Dependencies中會自動下載如下3個jar包:
接下來就是寫一段Java程序來生成QRCode了,大致說來就是設置好二維碼中的內容,然後調用qrgen的API來生成image/png格式的內容,既可以保存為圖片文件,還可以在網頁上直接顯示該QRCode。
Java代碼如下所示,QRCode的內容是一個Linux公社的鏈接:
package com.test.qrcode;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
public class QRCodeService
{
public static void main(String[] args)
{
String qrcodeContent = "http://www.linuxidc.com/";
ByteArrayOutputStream out = QRCode.from(qrcodeContent).to(ImageType.PNG).stream();
try
{
FileOutputStream fout = new FileOutputStream(new File("D:/Download/QR_Code.jpg"));
fout.write(out.toByteArray());
fout.flush();
fout.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
打開保存的圖片文件,就可以看到生成的Linux公社鏈接的二維碼了:
至此,一個簡單的Java生成二維碼的樣例就演示完了,可以借助qrgen的API的強大功能,實現我們特定的需求,例如:在網頁中動態為用戶生成二維碼等。