温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C# 利用QRCode生成二维码图片

发布时间:2020-07-21 23:35:54 来源:网络 阅读:2253 作者:dingzhaoqiang 栏目:编程语言

组件下载地址:http://download.csdn.net/detail/lybwwp/6861821


下载文件包包含ThoughtWorks.QRCode.dll与dll的源码,强人可修改些源码。

字符串较长的情况下,用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误。
解决方法:将 QRCodeVersion 改为0。

此代码功能:批量生成二维码图片保存到指定文件夹中(此图片可保存,可指定图片格式和图片大小)。

引用空间 ThoughtWorks.QRCode.dll

using ThoughtWorks.QRCode.Codec;

[csharp] view plaincopyprint?C# 利用QRCode生成二维码图片C# 利用QRCode生成二维码图片

  1. #region 二维码生成  

  2.         /// <summary>  

  3.         /// 批量生成二维码图片  

  4.         /// </summary>  

  5.         private void Create_CodeImages()  

  6.         {  

  7.             try  

  8.             {  

  9.                 if (myDataSet != null)  

  10.                 {  

  11.                     if (myDataSet.Tables[0].Rows.Count > 0)  

  12.                     {  

  13.                         //清空目录  

  14.                         DeleteDir(currentPath);  

  15.                         foreach (DataRow dr in myDataSet.Tables[0].Rows)  

  16.                         {  

  17.                             if (dr[2] != null)  

  18.                             {  

  19.                                 //生成图片  

  20.                                 Bitmap p_w_picpath = Create_ImgCode(dr[2].ToString(), imgSize);  

  21.                                 //保存图片  

  22.                                 SaveImg(currentPath, p_w_picpath);  

  23.                             }  

  24.                         }  

  25.                         //打开文件夹  

  26.                         Open_File(currentPath);  

  27.                         myDataSet = null;  

  28.                         return;  

  29.                     }  

  30.                 }  

  31.             }  

  32.             catch(Exception ex) {  

  33.                 MessageBox.Show(ex.ToString (), "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);  

  34.               

  35.             }  

  36.         }  

  37.   

  38.   

  39.         //程序路径  

  40.         readonly string currentPath = Application.StartupPath + @"\BarCode_Images";  

  41.   

  42.         /// <summary>  

  43.         /// 保存图片  

  44.         /// </summary>  

  45.         /// <param name="strPath">保存路径</param>  

  46.         /// <param name="img">图片</param>  

  47.         public void SaveImg(string strPath, Bitmap img)  

  48.         {  

  49.             //保存图片到目录  

  50.             if (Directory.Exists(strPath))  

  51.             {  

  52.                 //文件名称  

  53.                 string guid = Guid.NewGuid().ToString().Replace("-""") + ".png";  

  54.                 img.Save(strPath + "/" + guid, System.Drawing.Imaging.ImageFormat.Png);  

  55.             }  

  56.             else  

  57.             {  

  58.                 //当前目录不存在,则创建  

  59.                 Directory.CreateDirectory(strPath);  

  60.             }  

  61.         }  

  62.         /// <summary>  

  63.         /// 生成二维码图片  

  64.         /// </summary>  

  65.         /// <param name="codeNumber">要生成二维码的字符串</param>       

  66.         /// <param name="size">大小尺寸</param>  

  67.         /// <returns>二维码图片</returns>  

  68.         public Bitmap Create_ImgCode(string codeNumber, int size)  

  69.         {  

  70.             //创建二维码生成类  

  71.             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();  

  72.             //设置编码模式  

  73.             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;  

  74.             //设置编码测量度  

  75.             qrCodeEncoder.QRCodeScale = size;  

  76.             //设置编码版本  

  77.             qrCodeEncoder.QRCodeVersion = 0;  

  78.             //设置编码错误纠正  

  79.             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;  

  80.             //生成二维码图片  

  81.             System.Drawing.Bitmap p_w_picpath = qrCodeEncoder.Encode(codeNumber);  

  82.             return p_w_picpath;  

  83.         }  

  84.         /// <summary>  

  85.         /// /打开指定目录  

  86.         /// </summary>  

  87.         /// <param name="path"></param>  

  88.         public void Open_File(string path)  

  89.         {  

  90.             System.Diagnostics.Process.Start("explorer.exe", path);  

  91.         }  

  92.         /// <summary>  

  93.         /// 删除目录下所有文件  

  94.         /// </summary>  

  95.         /// <param name="aimPath">路径</param>  

  96.         public void DeleteDir(string aimPath)  

  97.         {  

  98.             try  

  99.             {  

  100.                 //目录是否存在  

  101.                 if (Directory.Exists(aimPath))  

  102.                 {  

  103.                     // 检查目标目录是否以目录分割字符结束如果不是则添加之  

  104.                     if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)  

  105.                         aimPath += Path.DirectorySeparatorChar;  

  106.                     // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组  

  107.                     // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法  

  108.                     string[] fileList = Directory.GetFiles(aimPath);  

  109.                     //string[] fileList = Directory.GetFileSystemEntries(aimPath);  

  110.                     // 遍历所有的文件和目录  

  111.                     foreach (string file in fileList)  

  112.                     {  

  113.                         // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件  

  114.                         if (Directory.Exists(file))  

  115.                         {  

  116.                             DeleteDir(aimPath + Path.GetFileName(file));  

  117.                         }  

  118.                         // 否则直接Delete文件  

  119.                         else  

  120.                         {  

  121.                             File.Delete(aimPath + Path.GetFileName(file));  

  122.                         }  

  123.                     }  

  124.                 }  

  125.             }  

  126.             catch (Exception e)  

  127.             {  

  128.                 throw e;  

  129.             }  

  130.         }  

  131.         #endregion  

C# 利用QRCode生成二维码图片

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI