.Net Core 下使用ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能(圖形驗(yàn)證碼)
本文介紹.Net Core下用第三方ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能。
通過測試的系統(tǒng):
Windows 8.1 64bit
Ubuntu Server 16.04 LTS 64bit
Fedora 24 64bit
CentOS 7.2 64bit
可以實(shí)現(xiàn)以下功能:
Open jpg, bmp, ico, png
Save jpg, bmp, ico, png
Resize image
Draw graphics with brush and pen
Open font and draw string
以上是官方給的資料。
No.1 項(xiàng)目引入ZKWeb.System.Drawing
NuGet引入包,不會的自己百度。
No.2 簡單的驗(yàn)證碼生成
int codeW = 80; int codeH = 30; int fontSize = 16; Random rnd = new Random(); //顏色列表,用于驗(yàn)證碼、噪線、噪點(diǎn) Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue }; //字體列表,用于驗(yàn)證碼 string[] font = { "Times New Roman" }; //驗(yàn)證碼的字符集,去掉了一些容易混淆的字符 //寫入Session、驗(yàn)證碼加密 //WebHelper.WriteSession("session_verifycode", Md5Helper.MD5(chkCode.ToLower(), 16)); //創(chuàng)建畫布 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); } //畫驗(yàn)證碼字符串 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); } //將驗(yàn)證碼圖片寫入內(nèi)存流,并將其以 "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 發(fā)布部署運(yùn)行
直接上圖,不會的看這里.Net Core 之 Ubuntu 14.04 部署過程(圖文詳解)
注意:驗(yàn)證碼Windows下生成無壓力,我用的Ubuntu 14,需要安裝gdi包,運(yùn)行日志中會有提示。
安裝方法:
Ubuntu 16.04:
apt-get install libgdiplus cd /usr/lib ln -s libgdiplus.so gdiplus.dll
Fedora 23:
dnf install libgdiplus cd /usr/lib64/ ln -s libgdiplus.so.0 gdiplus.dll
CentOS 7:
yum install autoconf automake libtool yum install freetype-devel fontconfig libXft-devel yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel yum install glib2-devel cairo-devel git clone https://github.com/mono/libgdiplus cd libgdiplus ./autogen.sh make make install cd /usr/lib64/ ln -s /usr/local/lib/libgdiplus.so gdiplus.dll
以上所述是小編給大家介紹的.Net Core 下使用ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能(圖形驗(yàn)證碼),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
ASP.NET Core應(yīng)用中與第三方IoC/DI框架的整合
ASP.NET Core應(yīng)用中,針對第三方DI框架的整合可以通過在定義Startup類型的ConfigureServices方法返回一個ServiceProvider來實(shí)現(xiàn)。但是并不是那么容易的,下面通過實(shí)例給大家分享一下2017-04-04Asp.NET Core 限流控制(AspNetCoreRateLimit)的實(shí)現(xiàn)
這篇文章主要介紹了Asp.NET Core 限流控制(AspNetCoreRateLimit)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03ASP.NET中iframe框架點(diǎn)擊左邊頁面鏈接 右邊顯示鏈接頁面內(nèi)容
這篇文章主要介紹了ASP.NET中iframe框架點(diǎn)擊左邊頁面鏈接,右邊顯示鏈接頁面內(nèi)容的實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-07-07asp.net利用NamingContainer屬性獲取GridView行號的方法
在最近的一個項(xiàng)目中,用到在GridView模板列中添加有DropDownList控件,并開啟其AutoPostback屬性。當(dāng)發(fā)生SelectedIndexChanged事件時,想同時獲取其所在的行號,從而獲取相應(yīng)的行信息。2013-07-07ASP.NET簡化編輯界面解決思路及實(shí)現(xiàn)代碼
簡化用戶操作界面,添加功能一般沒法簡化,但是如果是在GridView做顯示,編輯,更新與刪除,會讓用戶在編輯,需要點(diǎn)擊編輯銨鈕,再進(jìn)行編輯,或是取消編輯,下面是改進(jìn)的方法做了演示動畫,感興趣的朋友可以了解下2013-01-01ASP.net在頁面所有內(nèi)容生成后、輸出內(nèi)容前對頁面內(nèi)容進(jìn)行操作
ASP.net在頁面所有內(nèi)容生成后、輸出內(nèi)容前對頁面內(nèi)容進(jìn)行操作...2007-04-04