[ASP.NET] 產出 QRcode - 網頁版 - MessagingToolkit.QRCode 版

  • 9073
  • 0

摘要:[ASP.NET] 產出 QRcode - 網頁版 - MessagingToolkit.QRCode 版

 

 要產出 QR code 有很多現成的函示庫可以用,最為大家所用的是「Google ZXing」目前為 2.1 版,但我底下的說明不是用 ZXing 而是使用「MessagingToolkit.QRCode」,原因很簡單就是看了「這個影片」介紹,所以使用他來作為我 QRcode 的函示庫。不管用哪一個DLL都是OK的。

影片的六分鐘裡,清楚的說明了如何產出 QRcode 、如何另存 QRcode、如何解析現有的 QRcode 圖檔。

但是他是 win form,我想把他改成 web form ,於是遇到了底下幾個問題

  • 產出 QRcdoe 圖檔無法更新?
  • 怎麼設計按鈕來讓使用者下載圖檔?
  • 怎麼匯入現有的圖檔做解析?
--------------------------------------------------------
怎麼使用「MessagingToolkit.QRCode.dll」
  1. 上網搜尋並抓取函示庫 MessagingToolkit.QRCode.dll
  2. 在你的 asp.net 專案裡加入參考 (方法請參考) 
  3. 載入使用函示庫(using MessagingToolkit.QRCode.Codec;    using MessagingToolkit.QRCode.Codec.Data;  )
在專案的畫面設計上加入 TextBox*1 + Image*1 + Button*2 + Label*1
 
 
開始編寫產出 QRcode 的程式片段
 

protected void btn_generate_Click(object sender, EventArgs e)
{   //產出 QRcode 片段
    string docupath = Request.PhysicalApplicationPath; //抓取專案所在實際目錄路徑
    if (txt_content.Text != "") //txt_content 是讓使用者輸入的 TextBox
    {
        String xcontent = txt_content.Text;
        String xtime = DateTime.Now.Millisecond.ToString(); //取得 ms 當亂數
        //以 ms 隔開檔名,避免檔名相同 Browser cache 而誤解沒產出 QR code
        lbl_hide.Text = xtime; //利用 textbox 作暫時全域變數存放
        QRCodeEncoder xencoder = new QRCodeEncoder(); //建立 encoder
        System.Drawing.Bitmap qrcode = xencoder.Encode(xcontent); //將內容轉碼成 QR code
        qrcode.Save(docupath + "uploads\\qrcode"+xtime+".png"); //QRcode的 bitmap 另存為圖片檔
        Image1.ImageUrl = "~\\uploads\\qrcode" + xtime + ".png"; //以圖片檔方式顯示於 Image
    }
    else // textbox 沒內容就不轉 QRcode + 提示訊息
    {
        lbl_hint.Text = "請在文字輸入框裡輸入你要轉換的內容";
        //lbl_hint 是用來提示使用者相關注意的訊息 Label
    }
}   //產出 QRcode 片段

 
上面的程式片段用 millisecond 來做為檔案名稱的一部份,是為了避免檔名相同,而 browser  認為檔案相同,而 cache 不做重新載入。當然你也可以進一步用亂數來處理!!
 
至於將圖檔另存新檔的下載,我已另寫於「[ASP.NET] C# 點擊按鈕來下載檔案」一文中,所以在這只需要呼叫 function 
 
xDownload("檔案路徑+檔名" , "另存新檔的名稱");
 
結果會回傳 True/False 來表示檔案是否正常下載。
 
 
~End