Rumah pembangunan bahagian belakang Tutorial C#.Net .Net Core 之 图形验证码

.Net Core 之 图形验证码

May 26, 2017 pm 01:32 PM

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

通过测试的系统:
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
Salin selepas log masuk

以上是官方给的资料。

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();
}
Salin selepas log masuk

No.3 发布部署运行

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

QQ图片20161117104700.png

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

安装方法:

Ubuntu 16.04:

apt-get install libgdiplus
cd /usr/libln -s libgdiplus.so gdiplus.dll
Salin selepas log masuk

Fedora 23:

dnf install libgdiplus
cd /usr/lib64/ln -s libgdiplus.so.0 gdiplus.dll
Salin selepas log masuk

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
Salin selepas log masuk

【相关推荐】

1. .NET Core配置文件加载与DI注入配置数据

2. .NET Core CLI工具文档dotnet-publish

3. 详细介绍ZKEACMS for .Net Core

4. 分享.net MVC中使用forms验证实例代码

5. 在.net core 下如何进行http请求?

6. CentOS上运行ZKEACMS的实例教程

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mendayakan ciri integriti memori Teras Pengasingan dalam Windows 11 Bagaimana untuk mendayakan ciri integriti memori Teras Pengasingan dalam Windows 11 May 10, 2023 pm 11:49 PM

Kemas Kini Windows 11 2022 Microsoft (22H2) mendayakan perlindungan integriti memori CoreIsolation secara lalai. Walau bagaimanapun, jika anda menjalankan versi sistem pengendalian yang lebih lama, seperti Kemas Kini Windows 11 2022 (22H1), anda perlu menghidupkan ciri ini secara manual. Hidupkan ciri Integriti Memori CoreIsolation dalam Windows 11 Bagi pengguna yang tidak mengetahui tentang Pengasingan Teras, ini merupakan proses keselamatan yang direka untuk melindungi aktiviti teras asas pada Windows daripada program berniat jahat dengan mengasingkannya dalam ingatan. Proses ini, digabungkan dengan ciri integriti memori, memastikan

Apakah maksud teras komputer? Apakah maksud teras komputer? Sep 05, 2022 am 11:24 AM

Teras mempunyai dua makna dalam komputer: 1. Teras, juga dikenali sebagai teras, adalah bahagian terpenting CPU Semua pengiraan, menerima arahan storan, dan memproses data CPU dilakukan oleh teras; teras ialah nama pemproses Intel, Teras ialah jenama pemproses yang dilancarkan oleh Intel selepas pemproses Pentium Ia kini telah mengeluarkan pemproses Teras generasi kedua belas.

Apakah prospek pekerjaan C#? Apakah prospek pekerjaan C#? Oct 19, 2023 am 11:02 AM

Sama ada anda seorang pemula atau profesional yang berpengalaman, menguasai C# akan membuka jalan untuk kerjaya anda.

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET May 06, 2024 pm 04:43 PM

Perkembangan teknologi kecerdasan buatan (AI) sedang giat dijalankan hari ini, dan ia telah menunjukkan potensi dan pengaruh yang besar dalam pelbagai bidang. Hari ini Dayao akan berkongsi dengan anda 4 rangka kerja projek berkaitan LLM model AI sumber terbuka .NET, dengan harapan dapat memberi anda sedikit rujukan. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ialah kit pembangunan perisian sumber terbuka (SDK) yang direka untuk menyepadukan model bahasa besar (LLM) seperti OpenAI, Azure

Cara Membetulkan Ralat Perjalanan Terma Pemproses dalam Windows 11/10 [Betulkan] Cara Membetulkan Ralat Perjalanan Terma Pemproses dalam Windows 11/10 [Betulkan] Apr 17, 2023 am 08:13 AM

Kebanyakan peranti, seperti komputer riba dan desktop, telah banyak digunakan oleh pemain muda dan pengkod untuk masa yang lama. Sistem kadang-kadang hang disebabkan oleh beban aplikasi. Ini memaksa pengguna untuk menutup sistem mereka. Ini berlaku terutamanya kepada pemain yang memasang dan bermain permainan berat. Apabila sistem cuba untuk but selepas penutupan paksa, ia melemparkan ralat pada skrin hitam seperti yang ditunjukkan di bawah: Di bawah ialah amaran yang dikesan semasa but ini. Ini boleh dilihat dalam tetapan pada halaman log acara. Amaran: Perjalanan haba pemproses. Tekan sebarang kekunci untuk meneruskan. ..Mesej amaran jenis ini sentiasa dilemparkan apabila suhu pemproses desktop atau komputer riba melebihi suhu ambangnya. Disenaraikan di bawah adalah sebab mengapa ini berlaku pada sistem Windows. Banyak aplikasi berat ada dalam

Teknologi pengoptimuman prestasi .NET untuk pembangun Teknologi pengoptimuman prestasi .NET untuk pembangun Sep 12, 2023 am 10:43 AM

Jika anda seorang pembangun .NET, anda mesti sedar tentang kepentingan mengoptimumkan fungsi dan prestasi dalam menyampaikan perisian berkualiti tinggi. Dengan menggunakan pakar sumber yang disediakan dan mengurangkan masa memuatkan tapak web, anda bukan sahaja mencipta pengalaman yang menyenangkan untuk pengguna anda tetapi juga mengurangkan kos infrastruktur.

Perbezaan prestasi antara rangka kerja Java dan rangka kerja .NET Perbezaan prestasi antara rangka kerja Java dan rangka kerja .NET Jun 03, 2024 am 09:19 AM

Dari segi pemprosesan permintaan selaras tinggi, .NETASP.NETCoreWebAPI berprestasi lebih baik daripada JavaSpringMVC Sebabnya termasuk: Kompilasi awal AOT, yang mengurangkan masa permulaan pengurusan memori, di mana pembangun bertanggungjawab untuk memperuntukkan dan melepaskan memori objek.

Amalan pembangunan aplikasi merentas platform Teras .NET: perjalanan lancar dari Windows ke Linux dan macOS Amalan pembangunan aplikasi merentas platform Teras .NET: perjalanan lancar dari Windows ke Linux dan macOS Feb 26, 2024 pm 12:55 PM

Dengan pelancaran .NETCore, pembangun .NET mempunyai peluang baharu untuk menulis dan menjalankan aplikasi .NET dengan mudah pada berbilang sistem pengendalian. Artikel ini akan menyelidiki cara menggunakan .NETCore untuk mencapai pembangunan aplikasi merentas platform dan berkongsi pengalaman amalan terbaik pada sistem pengendalian seperti Windows, Linux dan macOS. 1. Sediakan persekitaran pembangunan Untuk memulakan pembangunan aplikasi merentas platform, anda perlu terlebih dahulu menyediakan persekitaran pembangunan untuk setiap platform sasaran. Windows Pada Windows, anda boleh memasang .NETCoreSDK melalui Visual Studio. Selepas pemasangan selesai, anda boleh mencipta dan menjalankan projek .NETCore melalui Visual Studio. Li

See all articles