您好,登錄后才能下訂單哦!
一、條形碼
一維碼,俗稱條形碼,廣泛的用于電子工業等行業。比如我們常見的書籍背面就會有條形碼,通過掃描槍等設備掃描就可以獲得書籍的ISBN(International standard book number,國際標準書號)。編碼方式也很多,比如Code39和Code128等等,這里選用了code128代碼,摘自于互聯網,稍加修改(比如文字置于條碼的中間位置)。讀者可以直接拷貝自項目中使用,這里簡單演示一下,以Code128為例。
Code128 code = new Code128(); code.ValueFont = new Font("Arial", 7);//聲明條碼下方的字體 Bitmap bitMap = code.GetCodeImage(tf6_PERSONIDNUM.Text.Trim(), Code128.Encode.Code128A);//通過對文本框的文件進行Code128編碼獲得位圖 string fileName = Server.MapPath("~") + "Images\\QRImages\\" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";//獲取圖片路徑 bitMap.Save(fileName, ImageFormat.Jpeg);//保存圖片 this.QRCodeImage.ImageUrl = "~/Images/QRImages/" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";//圖片控件顯示
Code39的類使用方法類似。由于Code39編碼使用較為廣泛,網上也有很多封裝好的dll可直接使用,比如BarCode,直接引用dll即可。
引用BarCode方式的代碼:
BarcodeControl barcode = new BarcodeControl(); barcode.BarcodeType = BarcodeType.CODE128C; barcode.CopyRight = ""; // 空字符串就會不顯示標題; barcode.Data = tf6_PERSONIDNUM.Text.Trim(); MemoryStream stream = new MemoryStream(); barcode.MakeImage(ImageFormat.Png, 1, 1, true, false, null, stream); Bitmap bitMap = new Bitmap(stream); string fileName = Server.MapPath("~") + "Images\\QRImages\\" + tf6_PERSONIDNUM.Text.Trim() + ".jpg"; bitMap.Save(fileName, ImageFormat.Jpeg); this.QRCodeImage.ImageUrl = "~/Images/QRImages/" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";
最后上個效果圖:
二、二維碼
二維碼現在越來越流行,可以使用手機上或其它移動終端上的二維碼掃描器軟件對著二維碼一掃,就可以得到相關信息。在互聯網站上,可以找到很多二維碼的工具,甚至還有不少在線生成、解析二維碼的網站。在業務系統當中,比如檔案管理系統中,以前一般都是通過條形碼(一維碼)來存儲檔案職工的基本信息,但是存儲容量有限。而現在完全可以使用二維碼存儲更多容量的信息。
我們這里使用了ThoughtWorks.QRCode.dll這個類庫,在asp.net項目中引用這個dll文件,就可以使用相關API進行開發。
比如,我們封裝了一個最精簡的類:
/// <summary> /// 二維碼助手類 /// </summary> public class QRCodeOp { /// <summary> /// 生成二維碼 /// </summary> /// <param name="qrCodeContent">要編碼的內容</param> /// <returns>返回二維碼位圖</returns> public static Bitmap QRCodeEncoderUtil(string qrCodeContent) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeVersion = 0; Bitmap img = qrCodeEncoder.Encode(qrCodeContent, Encoding.UTF8);//指定utf-8編碼, 支持中文 return img; } /// <summary> /// 解析二維碼 /// </summary> /// <param name="bitmap">要解析的二維碼位圖</param> /// <returns>解析后的字符串</returns> public static string QRCodeDecoderUtil(Bitmap bitmap) { QRCodeDecoder decoder = new QRCodeDecoder(); string decodedString = decoder.decode(new QRCodeBitmapImage(bitmap), Encoding.UTF8);//指定utf-8編碼, 支持中文 return decodedString; } }
使用上面兩個方法,就可以生成和解析二維碼。
我們在程序中調用的時候,就可以這樣。
protected void EncodeClick(object sender, DirectEventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append(tf6_PERSONIDNUM.Text.Trim() + ";");//個人×××號 sb.Append(tf_DAID.Text.Trim() + ";"); sb.Append(tf_DANAME.Text.Trim() + ";"); sb.Append(cb_DABUSKIND.Text.Trim() + ";"); sb.Append(cb_DAKIND.Text.Trim() + ";"); sb.Append(cb_DALEVELCODE.Text.Trim() + ";"); sb.Append(df_DABUILDTIME.Text.Trim() + ";"); sb.Append(tf_DAORG.Text.Trim() + ";"); sb.Append(cb_DASTATUS.Text.Trim() + ";"); sb.Append(tf_DABUILDER.Text.Trim() + ";"); sb.Append(tf_DABUILDORG.Text.Trim() + ";"); Bitmap bitmap = QRCodeOp.QRCodeEncoderUtil((sb.ToString().Trim()));//調用二維碼編碼方法生成位圖 string fileName = Server.MapPath("~") + "Images\\QRImages\\" + tf6_PERSONIDNUM.Text.Trim() + ".jpg"; bitmap.Save(fileName);//保存位圖,文件名為個人×××號 this.QRCodeImage.ImageUrl = "~/Images/QRImages/" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";//顯示圖片 X.Msg.Alert("二維碼信息", QRCodeOp.QRCodeDecoderUtil(bitmap)).Show();//調用二維碼解碼方法彈出編碼之前的信息 }
這里我在項目中用的是Ext.NET組件。X.Msg.Alert和QRCodeImage.ImageUrl以及DicrectEventArgs這些并不是很重要,感興趣的讀者可以去ext.net網站查閱ext.net的相關知識。
看下效果:
點擊按鈕,我們把文本框中的信息(含數字、字母、中文、時間等),生成了二維碼圖片,并反過來進行了解析。
讀者可以在此基礎之上進一步封裝擴展,與WCF等技術結合,提供一個二維碼生成的web service。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。