C#批量生成二维码到文件夹
C#单个二维码生成的教程我在之前写过一篇博客,昨天又接了个需求,是之前那个单个二维码生成的升级版,需要把系统中所有经销商的邀请二维码直接生成到电脑桌面上。
实现起来倒是不难,自动在桌面创建一个文件夹,然后查出来所有经销商的信息,然后循环组合经销商的邀请链接并生成二维码,最后把这个二维码存到刚才生成的文件夹就行了
废话不多说了,直接贴代码出来, 记得在NuGet里下载引用QRCoder.BLL ,不会玩的话,去看之前我写的那个博客即可。
public ActionResult GeneralizeBatchStorage()
{
try
{
string desktopPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
string returntext = DateTime.Now.ToString("yyyyMMddHHmmss") + "二维码下载";
string newStoragePath = desktopPath + @"\" + returntext;
Directory.CreateDirectory(newStoragePath);
DataTable data = CarBindBLL.IsCarDatasUsereseqws();
List<SysUsersModel> carAndBindModels = ConvertHelper<SysUsersModel>.ConvertToList(data);
foreach (var item in carAndBindModels)
{
string generalizeUrl = WebConfigurationManager.AppSettings["apiUrl"] + new DesArithmetic().DesEncrypt(item.usr_name);
byte[] generalizebyte = ImgToByte(GetCode(generalizeUrl, 8, 7, WebConfigurationManager.AppSettings["icoImg"], 15, 1, false));
Image image = Image.FromStream(new MemoryStream(generalizebyte));
string imgStoragePath = newStoragePath + @"\" + item.usr_name + ".jpg";
image.Save(imgStoragePath, ImageFormat.Jpeg);
CodeAddText(item.usr_name, imgStoragePath);
}
return Content("经销商二维码批量生成完毕!已在你的电脑桌面生成名为:《" + returntext + "》的文件夹!");
}
catch (Exception ex)
{
return Content("批量生成发生错误!");
}
}
这个需求里对二维码还有个小要求,就是每张二维码下面要带上经销商的名字,上面代码不变,把下面合并位图的代码方法加上就行了。一个是合并位图,一个是把图片转成byte[]。
private static Bitmap CodeAddTextByTwo(string name, Bitmap bitmap)
{
Font font = new Font("GB2312", 16, FontStyle.Regular);//设置字体,大小,粗细
SolidBrush sbrush = new SolidBrush(Color.Black);//设置颜色
try
{
Bitmap bmp = new Bitmap(270, 310);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.DrawString(name, font, sbrush, new PointF((Int32)(bmp.Width - name.Length * 10.8 - 40) / 2, bmp.Height - 35));
// 合并位图
g.DrawImage(bitmap, new Rectangle(0, 0, 270, 270));
return bmp;
}
catch
{
Bitmap bmp = new Bitmap(343, 403);
return bmp;
}
}
public static byte[] ImgToByte(Bitmap bitmap)
{
try
{
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
return arr;
}
catch (Exception ex)
{
return null;
}
}
版权声明:
作者:兴兴
文章:C#批量生成二维码到文件夹
链接:https://www.networkcabin.com/original/1277
文章版权归本站所有,未经授权请勿转载。
作者:兴兴
文章:C#批量生成二维码到文件夹
链接:https://www.networkcabin.com/original/1277
文章版权归本站所有,未经授权请勿转载。
THE END