最近做了有关二维码的开发,发现网上多是用ThoughtWorks.QRCode和QrCode.Net两种方式。在参考官网时模仿写了两个Demo,其中ThoughtWorks.QRCode的功能更多,但是dll文件大小为6M,QrCode.Net大小为400K左右,搜集整理了网上的有关资料,如下:
1、ThoughtWorks.QRCode:
1 private void CreateQrcode(string nr) 2 { 3 4 Bitmap bt; 5 6 string enCodeString = nr; 7 8 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); 9 10 bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8); 11 12 string filename = DateTime.Now.ToString("yyyymmddhhmmss"); 13 14 string path = Server.MapPath("~/image/") + filename + ".jpg"; 15 16 Response.Write(path); 17 18 bt.Save(path); 19 20 this.Image1.ImageUrl = "~/image/" + filename + ".jpg"; 21 22 }
2、QrCode.Net:
1 protected void Button1_Click(object sender, EventArgs e) 2 { 3 using (var ms = new MemoryStream()) 4 { 5 string stringtest = "中国inghttp://www.baidu.com/mvc.test?&"; 6 GetQRCode(stringtest, ms); 7 Response.ContentType = "image/Png"; 8 Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length); 9 10 Image img = Image.FromStream(ms); 11 string filename = DateTime.Now.ToString("yyyymmddhhmmss"); 12 string path = Server.MapPath("~/image/") + filename + ".png"; 13 img.Save(path); 14 15 Response.End(); 16 17 } 18 19 } 20 21 22 /// <summary> 23 24 /// 获取二维码 25 26 /// </summary> 27 28 /// <param name="strContent">待编码的字符</param> 29 30 /// <param name="ms">输出流</param> 31 32 ///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns> 33 34 public static bool GetQRCode(string strContent, MemoryStream ms) 35 36 { 37 38 ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //误差校正水平 39 40 string Content = strContent;//待编码内容 41 42 QuietZoneModules QuietZones = QuietZoneModules.Two; //空白区域 43 44 int ModuleSize = 12;//大小 45 46 var encoder = new QrEncoder(Ecl); 47 48 QrCode qr; 49 50 if (encoder.TryEncode(Content, out qr))//对内容进行编码,并保存生成的矩阵 51 52 { 53 54 var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones)); 55 56 render.WriteToStream(qr.Matrix, ImageFormat.Png, ms); 57 58 } 59 60 else 61 62 { 63 64 return false; 65 66 } 67 68 return true; 69 70 }
需要源码的朋友svn下载路径为:
http://code.taobao.org/svn/QrCodeDemo
浙公网安备 33010602011771号