.net 二维码生成

        public static string GetQRImageUrl(string strData, string level, string qrEncoding, int version, int scale)
        {
            //return System.Web.HttpContext.Current.Server.MapPath(@"~\upload");
            try
            {
                
                QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                string encoding = qrEncoding;
                switch (encoding)
                {
                    case "Byte":
                        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                        break;
                    case "AlphaNumeric":
                        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
                        break;
                    case "Numeric":
                        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
                        break;
                    default:
                        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                        break;
                }

                qrCodeEncoder.QRCodeScale = scale;
                //字符串较长的情况下,用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误。
                //解决方法:将 QRCodeVersion 改为0。
                //qrCodeEncoder.QRCodeVersion = version;
                qrCodeEncoder.QRCodeVersion = 0;
                switch (level)
                {
                    case "L":
                        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
                        break;
                    case "M":
                        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
                        break;
                    case "Q":
                        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
                        break;
                    default:
                        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
                        break;
                }
               
               
                //文字生成图片
                Bitmap image = qrCodeEncoder.Encode(strData.ToString(), Encoding.GetEncoding("GB2312"));
                //string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";
                string filename = strData.ToString() + ".jpg";
                string filepath = System.Web.HttpContext.Current.Server.MapPath(@"~\upload") + "\\" + filename;
                //如果文件夹不存在,则创建
                //if (!Directory.Exists(filepath))
                //    Directory.CreateDirectory(filepath);
                System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
                image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
                fs.Close();
                image.Dispose();
                return ("/upload/" + filename);
            }
            catch (Exception ex)
            {
                return "";
                throw new ApplicationException(ex.Message);
            }
        }

附件:qRCode 引用链接库

posted @ 2017-03-20 14:27  苏永焕  阅读(195)  评论(0)    收藏  举报