1. 程式人生 > >利用QrCode.Net生成二維碼 asp.net mvc c#

利用QrCode.Net生成二維碼 asp.net mvc c#

        /// <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