第一步:下载ThoughtWorks.QRCode.dll 建议用这个版本的:1.0.2774.19990
下载路径:https://dl.pconline.com.cn/download/1407628-1.html
第二部封装一个类:引用 ThoughtWorks.QRCode.dll 控件
/// <summary>
/// 二维码生成
/// </summary>
public class QrCodeHelper
{
#region 保存图片
/// <summary>
/// 保存图片
/// </summary>
/// <param name="strPath">保存路径</param>
/// <param name="img">图片</param>
/// <returns>图片路径</returns>
public static string SaveImg(string strPath, Bitmap img)
{
//保存图片到目录
if (Directory.Exists(strPath))
{
//文件名称
string guid = Guid.NewGuid().ToString().Replace("-", "") + ".png";
img.Save(strPath + "/" + guid, System.Drawing.Imaging.ImageFormat.Png);
return (guid);
}
else
{
//当前目录不存在,则创建
Directory.CreateDirectory(strPath);
return "";
}
}
#endregion
#region 生成二维码图片
/// <summary>
/// 生成二维码图片
/// </summary>
/// <param name="codeNumber">要生成二维码的字符串</param>
/// <param name="size">大小尺寸</param>
/// <returns>二维码图片</returns>
public static Bitmap Create_ImgCode(string codeNumber, int size)
{
//创建二维码生成类
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
//设置编码模式
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
//设置编码测量度
qrCodeEncoder.QRCodeScale = size;
//设置编码版本
qrCodeEncoder.QRCodeVersion = 0;
//设置编码错误纠正
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
//生成二维码图片
System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber);
return image;
}
#endregion
#region 打开指定目录
/// <summary>
/// 打开指定目录
/// </summary>
/// <param name="path"></param>
public static void Open_File(string path)
{
System.Diagnostics.Process.Start("explorer.exe", path);
}
#endregion
#region 删除目录下所有文件
/// <summary>
/// 删除目录下所有文件
/// </summary>
/// <param name="aimPath">路径</param>
public static void DeleteDir(string aimPath)
{
try
{
//目录是否存在
if (Directory.Exists(aimPath))
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
string[] fileList = Directory.GetFiles(aimPath);
//string[] fileList = Directory.GetFileSystemEntries(aimPath);
// 遍历所有的文件和目录
foreach (string file in fileList)
{
// 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
if (Directory.Exists(file))
{
DeleteDir(aimPath + Path.GetFileName(file));
}
// 否则直接Delete文件
else
{
File.Delete(aimPath + Path.GetFileName(file));
}
}
}
}
catch (Exception e)
{
throw e;
}
}
#endregion
第三部 :控制器代码
/// 生成二维码
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult CreateQRcode()
{
return View();
}
[HttpPost]
public ActionResult CreateQRcode(string content)
{
string currentPath = Server.MapPath("~/.") + @"\Content\Own\BarCode_Images";//二维码图片存放的路径
Bitmap bs = QrCodeHelper.Create_ImgCode(content, 8);//创建二维码图片
string imgUrl = QrCodeHelper.SaveImg(currentPath, bs);//保存图片
ViewBag.ImgUrl = @"/Content/Own/BarCode_Images" + @"/" + imgUrl;//将路径返回到前台引用
return View();
}
第四部:前段代码
<div>
@{
ViewBag.Title = "创建二维码";
}
<h2>创建二维码</h2>
<form id="form1" action="/My/CreateQRcode" method="post">
<div>
请输入内容:<input type="text" name="content" />
<br />
<input id="Button1" value="生成二维码" type="submit" />
</div>
<div>
@if (ViewBag.ImgUrl != null)
{
<img src="@ViewBag.ImgUrl" />
}
</div>
</form>
</div>
第五步:修改前段路径修改成自己的控制器名字