2011年8月11日 星期四

[教學] QR Code 讀取器

對於流動電話用戶, 在電腦或雜誌看到apps 介紹, 希望在流動電話安裝, 最方便直接可使用QR Code, 可以令用戶免打URL 之苦. 現在Adobe AIR 已有相應引擎讀取QR Code 或Barcode.
以下一實例使用ZXing Barcode Library, 然後打開系統預設瀏覽器.


範例功能:
  1. 用戶輸入字串 (只限英文/數字/符號), 產生QR Code 影像
  2. 開啟相機, 解讀影像, 顯示QR Code 內包含的字串, 打開系統預設瀏覽器

範例使用類別說明:
  • Camera - 別從用戶端系統的攝影機擷取視訊
  • Timer - 可讓您在指定的時間序列上執行程式碼
  • BitmapData - 建立任意調整大小的透明或不透明點陣圖影像,而且在執行階段中以各種方式操作
  • com.google.zxing.* - ZXing Barcode Library 包裹, 能解讀QRCode, EAN / ISBN, Code32/128, datamatrix, UPCA, UPCE

Step 1: 建立相機 (Camera 物件)
var camera:Camera = Camera.getCamera();
var video:Video = new Video(WIDTH, WIDTH);
camera.setMode(WIDTH, WIDTH, 24.);
camera.setQuality(1638400, 85);
video.attachCamera(camera);
_ui = new UIComponent();
_ui.addChild(video);
this.addElement(_ui);

Step 2: 建立計時器, 設定每一秒解讀影像一次 (Timer 物件)
_timer = new Timer(1000, 0);
_timer.addEventListener(TimerEvent.TIMER, timerHandler);
_timer.start();

Step 3: 最後, 利用zxing 包裹, 解讀影像成字串 (使用com.google.zxing 相關物件)
var lsource:BufferedImageLuminanceSource = new BufferedImageLuminanceSource(bitmapData);
var bitmap:BinaryBitmap = new BinaryBitmap(new GlobalHistogramBinarizer(lsource));
var ht:HashTable = getHint();
var res:Result = null;
try{
 res = _myReader.decode(bitmap, ht);
}catch(e:Error){
 return;
}

if(res!=null){
 var parsedResult:ParsedResult = ResultParser.parseResult(res);
 msgTxt.text = parsedResult.getDisplayResult();
}

大家可以 [下載], 然後一齊玩玩QR Code.
當然除URL 外, 還可製作自家應用程式或遊戲.

參考資料: http://zxing.riaforge.org/

2 則留言:

Q教授 提到...

看了一下你的文章,感覺很棒,有這個榮幸交個朋友吧^^

Turtler 提到...

十分歡迎, 大家交流下心得 ^^