Home  >  Article  >  Backend Development  >  .Net Core Graphic Verification Code

.Net Core Graphic Verification Code

高洛峰
高洛峰Original
2017-05-26 13:32:012696browse

This article introduces the use of third-party ZKWeb.System.Drawing to implement the verification code function under .Net Core.

通过测试的系统:
Windows 8.1 64bit
Ubuntu Server 16.04 LTS 64bit
Fedora 24 64bit
CentOS 7.2 64bit

可以实现以下功能:
Open jpg, bmp, ico, png
Save jpg, bmp, ico, png
Resize image
Draw graphics with brush and pen
Open font and draw string

The above is the official information.

No.1 project introduces ZKWeb.System.Drawing

NuGet import package, which Baidu does not know how to do.

No.2 Simple verification code generation

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 Release deployment and operation

Just go to the picture above, if you don’t know it, look here www.cnblogs.com/niao/p/6057860.html

.Net Core Graphic Verification Code

Note: There is no pressure to generate the verification code under Windows. I use Ubuntu 14 and need to install the gdi package. There will be a prompt in the running log.

Installation method:

Ubuntu 16.04:

apt-get install libgdiplus
cd /usr/libln -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

[Related recommendations]

1. .NET Core configuration file loading and DI injection of configuration data

2. .NET Core CLI tool documentation dotnet-publish

3. Detailed introduction to ZKEACMS for .Net Core

4. Share the form verification example code in .net MVC

5. Under .net core How to make http request?

6. An example tutorial of running ZKEACMS on CentOS

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn