2011-07-29

【PHP】解讀/掃描 QRcode

咦? QRcode 不是都是用手機掃描的嗎? iPhoneAppStoreGooglePlay 就有一堆 QRcode reader 可供下載。

有朋友提出在 server 解讀 QRcode 的想法,覺得很有趣。

例如將大批要歸檔的資料轉成 QRcode,貼在文件上,掃描器掃描後上傳到伺服器,伺服器上的程式就可解讀 QRcode 後進行歸檔程序。

不過截至目前(2011-07-28) 尚沒有 PHP 解讀 QRcode 的程式或函式庫,只能借助 java 之力了。

先檢查您的網站是否有安裝 java,伺服器上至少要安裝 java 執行環境,我的伺服器為 CentOS5.x,故我用 yum 安裝.

[root]# yum install java

若還要改寫原作者的程式, 則還需要 java 編譯器.

[root]# yum whatprovides javac

[root]#yum install java-1.6.0-openjdk-devel

QRcode 是日本公司發明的,日本也很佛心的推出開源且免費的 QRcode 解讀程式,目前是 0.9 版。

http://qrcode.sourceforge.jp/ 下載,解壓縮後找到 bin 目錄下有個 qrcode-cui.jar,將它上傳到您自己的網站上,以本文為例,我在我網站下新建一個目錄 qrcode,再將 qrcode-cui.jar 放進該目錄下。

寫一個 PHP 小程式,如下:
 
...
...
$str = exec('java -cp qrcode/qrcode-cui.jar example/QRCodeDecoderCUIExample wiki1.jpg');
echo 'wiki1-->'.$str;
...
...
 

簡單說明一下(我也只能提供這一些些, 因為我也不熟 java... :-P ) ----
參數 -cp 代表 classpath,為尋找類別的路徑,因為我放在 qrcode 下,所以是 qrcode/qrcode-cui.jar
example/QRCodeDecoderCUIExample 是作者原始碼所設定的,所以這一段不要去動它。

wiki1.jpg 表含有 QRcode 要解讀的圖檔,圖檔若與程式放在同一目錄下,就只要寫出檔名,若在其他目錄下,如 image 目錄,則寫為 image/wiki1.jpg

在本例中, 該圖檔解讀出來下列文字
http://zh.wikipedia.org

QRcode 和傳統條碼比較, 優點不僅是可容納較多的文字, 並且幾乎沒有方向限制, 也就是即使歪斜的 QRcode 也可以解讀出來。

沒有留言:

張貼留言