2012年4月24日 星期二

二維條碼 QR code 最簡單範例

二維條碼 QR code 最簡單範例

Jing (mqJing@gmail.com)

http://code.google.com/p/zxing/

Google Doc Version

預計時間: 25 分鐘

Project: download

ZXing ("Zebra Crossing"), Opensource 2d barcode library. 這份文件, 基本上就是跟著 http://code.google.com/p/zxing/wiki/GettingStarted 走一遍. 幾乎沒遇到甚麼困難. 你可以在幾分鐘內, 寫出一個在 Windows 產生 QR code 程式, 在 Android 寫出一個 QR code 讀取程式.

本文主要分成兩大部分, 安裝 library 然後就是寫程式. 非常的簡單. 值得一提的是 ZXing 是一個跨平台的 library, 所以想寫 Android, iPhone, Windows 程式的人, 想使用 2D barcode 功能, 使用 ZXing 就可以了.

Outline:

  1. 安裝與測試
    • ZXing library (Ubuntu + Windows) setup + Android Testing Program
  2. 寫一個 C# 範例, 產生 QR Code

Ubuntu Version


Quick Guide
Step
1: install ant
Step 2: Quick build for Android

(a) 建立核心: cd core; ant export

(b) 設定 Android properties:

cd Android; echo "sdk.dir=/home/jing/NVPACK/android-sdk-linux_x86" > local.properties

(c) Build Android client ap: ant debug

(d) plug your android device and ant debug install

Detail Information
Step
1: install ant
Step 2: Quick build for Android

  • 建立核心
    指令:
              cd core; ant export
  • 設定 Android properties
    指令:
              echo “sdk.dir=<android_sdk_path>” > local.properties
    ex:

cd ../android; echo "sdk.dir=/home/jing/NVPACK/android-sdk-linux_x86" > local.properties

  • 開始 Build Android client ap
    指令:
               ant debug
  • 把建立好的 BarcodeScanner-debug.apk 安裝到你的 Android 機器上
    step 1: 把你的 Android  device 連上電腦
    step 2: ant debug install


測試
QRCode scanner demo



For J2SE
Quick build for j2se

  • cd core;ant
  • cd javase;ant

Windows Version


Step 1: Install ant (安裝手冊)

http://ant.apache.org/bindownload.cgi

Step 2: 建立核心
指令:
             cd core; ant export

Step 3: 建立 Android Client Scanner 範例程式: CaptureActivity-debug.apk

(a) 設定 Android properties
指令:
           android update project -t 2 -p .

              check 一下產生出來 local.properties 的內容.  沒錯: sdk.dir 位置設定正確!

 

(b) Build Android client ap
指令:
          ant debug

Step 4: 安裝到你的 device
指令:
               ant debug install

 

 

寫一個 C# 範例, 產生 QR Code


Project: download

Step 1: 加入 zxing.dll   (ZXing-2.0\csharp\zxing.dll)
操作 Visual Studio 2010: 
            [Add Reference …] -> [Browse]



Step 2: 產生QRCode 關鍵片段 

下載完整專案 (download)

// import 的部分

using com.google.zxing; // for BarcodeFormat

using com.google.zxing.qrcode; // for QRCode Engine

using com.google.zxing.common; // for ByteMatrix

using System.Drawing.Imaging; // for ImageFormat

 

// 關鍵程式碼

QRCodeWriter writer = new QRCodeWriter();
ByteMatrix matrix; // 這是放 2D code 的結果
int size = 180;   // 指定最後產生的 2D code 影像大小 (pixel)

// 進行 QRCode 的編碼工作
<關鍵片段>
matrix = writer.encode("test message ", BarcodeFormat.QR_CODE, size, size, null);

// 把 2d code 畫出來
Bitmap img = new Bitmap(size, size); // 建立 Bitmap 圖形物件
Color Color = Color.FromArgb(0, 0, 0); // 設定 Bitmap 物件內每一個點的顏色格式為 RGB
for (int y = 0; y < matrix.Height; ++y) {
    for (int x = 0; x < matrix.Width; ++x) {
        Color pixelColor = img.GetPixel(x, y);
            if (matrix.get_Renamed(x, y) == -1) {
                   img.SetPixel(x, y, Color.White);
            } else {
                   img.SetPixel(x, y, Color.Black);
           } // end of update 2d barcode image
       }
} // end of for-loop

 

Enjoy!

by Jing.

Reference

  1. http://code.google.com/p/zxing/wiki/GettingStarted