本文介紹.Net Core下用第三方ZKWeb.System.Drawing實現驗證碼功能。
通過測試的系統:
Windows 8.1 64bit
Ubuntu Server 16.04 LTS 64bit
Fedora 24 64bit
CentOS 7.2 64bit
Resize image
Draw graphics with brush and penOpen font and draw string
以上是官方給的資料。
No.1 專案引進ZKWeb.System.Drawing
NuGet引入包,不會的自己百度。
No.2 簡單的驗證碼產生
int codeW = 80; int codeH = 30; int fontSize = 16; Random rnd = new Random(); //颜色列表,用于验证码、噪线、噪点 Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue }; //字体列表,用于验证码 string[] font = { "Times New Roman" }; //验证码的字符集,去掉了一些容易混淆的字符 //写入Session、验证码加密 //WebHelper.WriteSession("session_verifycode", Md5Helper.MD5(chkCode.ToLower(), 16)); //创建画布 Bitmap bmp = new Bitmap(codeW, codeH); Graphics g = Graphics.FromImage(bmp); g.Clear(Color.White); //画噪线 for (int i = 0; i < 1; i++) { int x1 = rnd.Next(codeW); int y1 = rnd.Next(codeH); int x2 = rnd.Next(codeW); int y2 = rnd.Next(codeH); Color clr = color[rnd.Next(color.Length)]; g.DrawLine(new Pen(clr), x1, y1, x2, y2); } //画验证码字符串 for (int i = 0; i < chkCode.Length; i++) { string fnt = font[rnd.Next(font.Length)]; Font ft = new Font(fnt, fontSize); Color clr = color[rnd.Next(color.Length)]; g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 18, (float)0); } //将验证码图片写入内存流,并将其以 "image/Png" 格式输出 MemoryStream ms = new MemoryStream(); try { bmp.Save(ms, ImageFormat.Png); return ms.ToArray(); } catch (Exception) { return null; } finally { g.Dispose(); bmp.Dispose(); }
No.3 發布部署運行
直接上圖,不會的看這裡.Net Core 之Ubuntu 14.04 部署過程詳情
(詳圖) 注意:驗證碼Windows下產生無壓力,我用的Ubuntu 14,需要安裝gdi包,運行日誌中會有提示。 安裝方法:Ubuntu 16.04:
apt-get install libgdiplus cd /usr/lib ln -s libgdiplus.so gdiplus.dll
Fedora 23:
以上所述是小編給大家介紹的.Net Core下使用ZKWeb.System.Drawing實現驗證碼功能(圖形驗證碼),希望對大家有幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對PHP中文網的支持!