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);
}
}
转载于:https://www.cnblogs.com/hasaki/p/6588713.html