本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。

  1. 通过测试的系统:
  2. Windows 8.1 64bit
  3. Ubuntu Server 16.04 LTS 64bit
  4. Fedora 24 64bit
  5. CentOS 7.2 64bit
  6.  
  7. 可以实现以下功能:
  8. Open jpg, bmp, ico, png
  9. Save jpg, bmp, ico, png
  10. Resize image
  11. Draw graphics with brush and pen
  12. Open font and draw string

以上是官方给的资料。


No.1 项目引入ZKWeb.System.Drawing

NuGet引入包,不会的自己百度。


No.2 简单的验证码生成

  1. int codeW = 80;
  2. int codeH = 30;
  3. int fontSize = 16;
  4. Random rnd = new Random();
  5. //颜色列表,用于验证码、噪线、噪点
  6. Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
  7. //字体列表,用于验证码
  8. string[] font = { "Times New Roman" };
  9. //验证码的字符集,去掉了一些容易混淆的字符
  10.  
  11. //写入Session、验证码加密
  12. //WebHelper.WriteSession("session_verifycode", Md5Helper.MD5(chkCode.ToLower(), 16));
  13. //创建画布
  14. Bitmap bmp = new Bitmap(codeW, codeH);
  15. Graphics g = Graphics.FromImage(bmp);
  16. g.Clear(Color.White);
  17. //画噪线
  18. for (int i = 0; i < 1; i++)
  19. {
  20. int x1 = rnd.Next(codeW);
  21. int y1 = rnd.Next(codeH);
  22. int x2 = rnd.Next(codeW);
  23. int y2 = rnd.Next(codeH);
  24. Color clr = color[rnd.Next(color.Length)];
  25. g.DrawLine(new Pen(clr), x1, y1, x2, y2);
  26. }
  27. //画验证码字符串
  28. for (int i = 0; i < chkCode.Length; i++)
  29. {
  30. string fnt = font[rnd.Next(font.Length)];
  31. Font ft = new Font(fnt, fontSize);
  32. Color clr = color[rnd.Next(color.Length)];
  33. g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 18, (float)0);
  34. }
  35. //将验证码图片写入内存流,并将其以 "image/Png" 格式输出
  36. MemoryStream ms = new MemoryStream();
  37. try
  38. {
  39. bmp.Save(ms, ImageFormat.Png);
  40. return ms.ToArray();
  41. }
  42. catch (Exception)
  43. {
  44. return null;
  45. }
  46. finally
  47. {
  48. g.Dispose();
  49. bmp.Dispose();
  50. }

No.3 发布部署运行

直接上图,不会的看这里http://www.cnblogs.com/niao/p/6057860.html


注意:验证码Windows下生成无压力,我用的Ubuntu 14,需要安装gdi包,运行日志中会有提示。

安装方法:

Ubuntu 16.04:

  1. apt-get install libgdiplus
  2. cd /usr/lib
  3. ln -s libgdiplus.so gdiplus.dll

Fedora 23:

  1. dnf install libgdiplus
  2. cd /usr/lib64/
  3. ln -s libgdiplus.so.0 gdiplus.dll

CentOS 7:

  1. yum install autoconf automake libtool
  2. yum install freetype-devel fontconfig libXft-devel
  3. yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel
  4. yum install glib2-devel cairo-devel
  5. git clone https://github.com/mono/libgdiplus
  6. cd libgdiplus
  7. ./autogen.sh
  8. make
  9. make install
  10. cd /usr/lib64/
  11. ln -s /usr/local/lib/libgdiplus.so gdiplus.dll

88..

.Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。的更多相关文章

  1. netcore发布到centos 验证码Zkweb.system.drawing不显示及乱码的问题

    netcore发布到centos 使用的是Zkweb.system.drawing生成验证码,发布后可能会出现不显示及乱码的情况 1.验证码图片不显示(通过日志会发现生成图片时代码已经异常) Zkwe ...

  2. 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)

    完美 原文Link: https://www.yanning.wang/archives/644.html 记录下做备份. 很少用Linux服务器. 这下可给整的够呛, 特别是按照官网竟然还不行, 所 ...

  3. .Net Core 之 图形验证码

    本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64 ...

  4. .Net Core上用于代替System.Drawing的类库

    目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出了将来取代System.Drawing的方案,偏向于使用一个单独的服务端进行各 ...

  5. [转].Net Core上用于代替System.Drawing的类库

    本文转自:http://www.tuicool.com/wx/iuaINjy 目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出 ...

  6. 本文介绍使用windows系统自带的远程桌面mstsc连接Centos 7.x远程桌面的基本方法。

    本文介绍使用windows系统自带的远程桌面mstsc连接Centos 7.x远程桌面的基本方法. 一.前言 我希望用windows远程访问centos图形界面.xmanager连接centos远程桌 ...

  7. 微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同。

    微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同. .NET Collection 函数库的 Has ...

  8. [翻译] 介绍EF Core

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  9. Routing 为 Magento 2 一个重要的部分,本文介绍基本应用

    Routing 为 Magento 2 一个重要的部分,本文介绍基本应用 Magento 2请求的流程 在Magento 2中,请求URL将如下所示: http://example.com/index ...

随机推荐

  1. IOS开发之绝对布局和相对布局(屏幕适配)

    之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...

  2. [TSM]在调度计划的时候出现 “ANS1125E Unmatched Quotes: 'string' ”错误的替代解决办法

    环境: TSMserver:TSM 6.2.3 for Windows Server 2008 R2 TSMclient: TSM 5.5.0 for CentOS 遇到的故障: ANS1125E U ...

  3. StructureMap.dll 中的 GetInstance 重载 + 如何利用 反射动态创建泛型类

    public static T GetInstance<T>(ExplicitArguments args); // // Summary: // Creates a new instan ...

  4. 1.羽翼sqlmap学习笔记之Access注入

    使用sqlmap工具进行Acces注入:1.判断一个url是否存在注入点,根据返回数据判断数据库类型: .sqlmap.py -u "http://abcd****efg.asp?id=7& ...

  5. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  6. NSPredicate 的使用

    NSPredicate是什么? NSPredicate 是预测的意思 但是我们常翻译成谓词 它可以干什么? 使用NSPredicate可以定义模糊查询条件 根据一定的条件 我们就可以从一个数组中快速找 ...

  7. 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言

    1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片. ...

  8. 设计模式(Design Pattern)系列之.NET专题

    最近,不是特别忙,重新翻了下设计模式,特地在此记录一下.会不定期更新本系列专题文章. 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用 ...

  9. 【C#公共帮助类】枚举独特类

    这个是枚举类,可能大家根据个人需求不同,不是很需要,但是跟着做那个项目的朋友会用到 我在这贴一下代码 using System; using System.Collections.Generic; u ...

  10. asp.net教程:编译错误同时存在于不同dll中

    asp.net 编译错误类型“同时存在于”不同的dll中. 出现这种错误大概有三种情况: 1.ASPX页面,一个*.ASPX,对应着一个*.cs文件,两者其实是一个文件,通过两者实现代码分离,每个*. ...