.Net Core 下使用ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能(圖形驗(yàn)證碼)
本文介紹.Net Core下用第三方ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能。
通過(guò)測(cè)試的系統(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引入包,不會(huì)的自己百度。
No.2 簡(jiǎn)單的驗(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)證碼的字符集,去掉了一些容易混淆的字符
//寫(xiě)入Session、驗(yàn)證碼加密
//WebHelper.WriteSession("session_verifycode", Md5Helper.MD5(chkCode.ToLower(), 16));
//創(chuàng)建畫(huà)布
Bitmap bmp = new Bitmap(codeW, codeH);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
//畫(huà)噪線
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);
}
//畫(huà)驗(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)證碼圖片寫(xiě)入內(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)行
直接上圖,不會(huì)的看這里.Net Core 之 Ubuntu 14.04 部署過(guò)程(圖文詳解)
注意:驗(yàn)證碼Windows下生成無(wú)壓力,我用的Ubuntu 14,需要安裝gdi包,運(yùn)行日志中會(huì)有提示。
安裝方法:
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)證碼),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
asp.net core3.1 引用的元包dll版本兼容性問(wèn)題解決方案
這篇文章主要介紹了asp.net core 3.1 引用的元包dll版本兼容性問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
.NET Core類(lèi)庫(kù)System.Reflection.DispatchProxy實(shí)現(xiàn)簡(jiǎn)易Aop的方法
這篇文章主要給大家介紹了關(guān)于.NET Core類(lèi)庫(kù)System.Reflection.DispatchProxy實(shí)現(xiàn)簡(jiǎn)易Aop的相關(guān)資料,文中通過(guò)示例代碼結(jié)束的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
asp.net中IDataParameter調(diào)用存儲(chǔ)過(guò)程的實(shí)現(xiàn)方法
這篇文章主要介紹了asp.net中IDataParameter調(diào)用存儲(chǔ)過(guò)程的實(shí)現(xiàn)方法,在asp.net數(shù)據(jù)庫(kù)程序設(shè)計(jì)中非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09
.NET 開(kāi)源配置組件 AgileConfig的使用簡(jiǎn)介
這篇文章主要介紹了.NET 開(kāi)源配置組件 AgileConfig的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-05-05
Ajax實(shí)現(xiàn)評(píng)論中頂和踩功能的實(shí)例代碼
這算是社團(tuán)布置的一個(gè)假期小作業(yè)吧,我只是提出我自己的解決方案,不一定是最合適的。2013-04-04
ASP.NET Mvc開(kāi)發(fā)之刪除修改數(shù)據(jù)
這篇文章主要介紹了ASP.NET Mvc開(kāi)發(fā)中的刪除修改數(shù)據(jù)功能,感興趣的小伙伴們可以參考一下2016-03-03
用擴(kuò)展方法優(yōu)化多條件查詢(不定條件查詢)
在我們開(kāi)發(fā)過(guò)程中,特別是管理系統(tǒng)的開(kāi)發(fā),經(jīng)常會(huì)遇到多條件查詢(或者叫不定條件查詢)的案例,就是提供給User輸入的查詢條件有多個(gè)不同的查詢欄位,而且,在實(shí)際使用中并不能確定User會(huì)使用哪些條件來(lái)當(dāng)做搜索條件2012-12-12


