摘要:[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」
-
上網搜尋並抓取函示庫 MessagingToolkit.QRCode.dll
-
在你的 asp.net 專案裡加入參考 (方法請參考)
-
載入使用函示庫(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 不做重新載入。當然你也可以進一步用亂數來處理!!
xDownload("檔案路徑+檔名" , "另存新檔的名稱");
結果會回傳 True/False 來表示檔案是否正常下載。
~End