利用QrCode.Net生成二維碼 asp.net mvc c#
阿新 • • 發佈:2019-01-07
/// <summary> /// 返回二維碼對應的圖片(base64編碼) /// </summary> /// <param name="inputText"></param> /// <returns></returns> public static string GetQRCodeImageAsBase64(string inputText,int pixelsPerModule = 10) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(inputText, QRCodeGenerator.ECCLevel.Q); Base64QRCode qrCode = new Base64QRCode(qrCodeData); string qrCodeImageAsBase64 = qrCode.GetGraphic(10); return qrCodeImageAsBase64; } public static Bitmap GetQRCodeImage(string inputText) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(inputText, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(10); return qrCodeImage; }
自己參考QrCode.Net開源例項封裝了一個生成二維碼的靜態方法如下:
/// <summary> /// 含有QR碼的描述類和包裝編碼和渲染 /// </summary> public class QRCodeHelper { /// <summary> /// 獲取二維碼 /// </summary> /// <param name="strContent">待編碼的字元</param> /// <param name="ms">輸出流</param> ///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns> public static bool GetQRCode(string strContent, MemoryStream ms) { ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //誤差校正水平 string Content = strContent;//待編碼內容 QuietZoneModules QuietZones = QuietZoneModules.Two; //空白區域 int ModuleSize = 12;//大小 var encoder = new QrEncoder(Ecl); QrCode qr; if (encoder.TryEncode(Content, out qr))//對內容進行編碼,並儲存生成的矩陣 { var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones)); render.WriteToStream(qr.Matrix, ImageFormat.Png, ms); } else { return false; } return true; } }
vs2010 framework3.5 引用的元件是QrCode.Net 0.4 Pre-Release\Gma.QrCodeNet.Encoding.Net35
public ActionResult Index() { // Render the QR code as an image using (var ms = new MemoryStream()) { string stringtest="中國inghttp://www.baidu.com/mvc.test?&"; QRCodeHelper.GetQRCode(stringtest, ms); Response.ContentType = "image/Png"; Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length); Response.End(); } return View(); }
也可以通過js生成相關的qrcode
jQuery.qrcode
http://larsjung.de/qrcode/ jquery的外掛,但是壓縮後是21k,支援div,images 和canvas,支援生成時嵌入文字和圖片
jquery-qrcode
https://github.com/jeromeetienne/jquery-qrcode ,壓縮後4k,支援table和canvas