二维码生成

关于二维码生成最近写了一个小Demo如下:

 控制器

 1 [HttpGet]
 2         public ActionResult CreateQRcode()
 3         {
 4             return View();
 5         }
 6 
 7         [HttpPost]
 8         public ActionResult CreateQRcode(string content)
 9         {
10             string currentPath = Server.MapPath("~/.") + @"/ContentOwnBarCode_Images";//二维码图片存放的路径
11             Bitmap bs = QrCodeHelper.Create_ImgCode(content, 8);//创建二维码图片
12             string imgUrl = QrCodeHelper.SaveImg(currentPath, bs);//保存图片
13             ViewBag.ImgUrl = @"/Content/Own/BarCode_Images" + @"/" + imgUrl;//将路径返回到前台引用
14             return View();
15         }

视图

 1    @* action 指定 控制器和视图*@
 2         <form id="form1" action="/Default1/CreateQRcode" method="post">
 3             <div>
 4                 请输入内容:<input type="text" name="content"  />
 5                 <br />
 6                 <input id="Button1" value="生成二维码" type="submit" />
 7             </div>
 8             <div>
 9                 @if (ViewBag.ImgUrl != null)
10                 {
11                     <img src="@ViewBag.ImgUrl" />
12                 }
13             </div>
14             </form>

生成二维码的类文件

  1  /// <summary>
  2     /// 二维码生成
  3     /// </summary>
  4     public class QrCodeHelper
  5     {
  6         #region 保存图片
  7         /// <summary>
  8         /// 保存图片
  9         /// </summary>
 10         /// <param name="strPath">保存路径</param>
 11         /// <param name="img">图片</param>
 12         /// <returns>图片路径</returns>
 13         public static string SaveImg(string strPath, Bitmap img)
 14         {
 15             //保存图片到目录
 16             if (Directory.Exists(strPath))
 17             {
 18                 //文件名称
 19                 string guid = Guid.NewGuid().ToString().Replace("-", "") + ".png";
 20                 img.Save(strPath + "/" + guid, System.Drawing.Imaging.ImageFormat.Png);
 21                 return (guid);
 22             }
 23             else
 24             {
 25                 //当前目录不存在,则创建
 26                 Directory.CreateDirectory(strPath);
 27                 return "";
 28             }
 29         }
 30         #endregion
 31 
 32         #region 生成二维码图片
 33         /// <summary>
 34         /// 生成二维码图片
 35         /// </summary>
 36         /// <param name="codeNumber">要生成二维码的字符串</param>     
 37         /// <param name="size">大小尺寸</param>
 38         /// <returns>二维码图片</returns>
 39         public static Bitmap Create_ImgCode(string codeNumber, int size)
 40         {
 41             //创建二维码生成类
 42             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
 43             //设置编码模式
 44             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
 45             //设置编码测量度
 46             qrCodeEncoder.QRCodeScale = size;
 47             //设置编码版本
 48             qrCodeEncoder.QRCodeVersion = 0;
 49             //设置编码错误纠正
 50             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
 51             //生成二维码图片
 52             System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber);
 53             return image;
 54         }
 55         #endregion
 56 
 57         #region 打开指定目录
 58         /// <summary>
 59         /// 打开指定目录
 60         /// </summary>
 61         /// <param name="path"></param>
 62         public static void Open_File(string path)
 63         {
 64             System.Diagnostics.Process.Start("explorer.exe", path);
 65         }
 66         #endregion
 67 
 68         #region 删除目录下所有文件
 69         /// <summary>
 70         /// 删除目录下所有文件
 71         /// </summary>
 72         /// <param name="aimPath">路径</param>
 73         public static void DeleteDir(string aimPath)
 74         {
 75             try
 76             {
 77                 //目录是否存在
 78                 if (Directory.Exists(aimPath))
 79                 {
 80                     // 检查目标目录是否以目录分割字符结束如果不是则添加之
 81                     if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
 82                         aimPath += Path.DirectorySeparatorChar;
 83                     // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
 84                     // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
 85                     string[] fileList = Directory.GetFiles(aimPath);
 86                     //string[] fileList = Directory.GetFileSystemEntries(aimPath);
 87                     // 遍历所有的文件和目录
 88                     foreach (string file in fileList)
 89                     {
 90                         // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
 91                         if (Directory.Exists(file))
 92                         {
 93                             DeleteDir(aimPath + Path.GetFileName(file));
 94                         }
 95                         // 否则直接Delete文件
 96                         else
 97                         {
 98                             File.Delete(aimPath + Path.GetFileName(file));
 99                         }
100                     }
101                 }
102             }
103             catch (Exception e)
104             {
105                 throw e;
106             }
107         }
108         #endregion
109     }
QrCodeHelper.cs

关于二维码的生成就到这里了。

原文地址:https://www.cnblogs.com/xuan666/p/10740027.html