一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET Core使用SkiaSharp實現(xiàn)驗證碼的示例代碼

ASP.NET Core使用SkiaSharp實現(xiàn)驗證碼的示例代碼

2020-05-21 14:50YOYOFx ASP.NET教程

本篇文章主要介紹了ASP.NET Core使用SkiaSharp實現(xiàn)驗證碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

本文并沒有實現(xiàn)一個完成的驗證碼樣例,只是提供了在當前.NET Core 2.0下使用Drawing API的另一種思路,并以簡單Demo的形式展示出來。

Skia

Skia是一個開源的二維圖形庫,提供各種常用的API,并可在多種軟硬件平臺上運行。谷歌Chrome瀏覽器、Chrome OS、安卓、火狐瀏覽器、火狐操作系統(tǒng)以及其它許多產品都使用它作為圖形引擎。

Skia由谷歌出資管理,任何人都可基于BSD免費軟件許可證使用Skia。Skia開發(fā)團隊致力于開發(fā)其核心部分, 并廣泛采納各方對于Skia的開源貢獻。

SkiaSharp

SkiaSharp是由Mono發(fā)起,基于谷歌的Skia圖形庫,實現(xiàn)的一個跨平臺的2D圖形.NET API綁定。提供一個全面的2D API,可用于跨移動、服務器和桌面模式的圖形渲染和圖像處理。

skiasharp提供PCL和平臺特定的綁定:

  1. .NET Core / .NET Standard 1.3
  2. Xamarin.Android
  3. Xamarin.iOS
  4. Xamarin.tvOS
  5. Xamarin.Mac
  6. Windows Classic Desktop (Windows.Forms / WPF)
  7. Windows UWP (Desktop / Mobile / Xbox / HoloLens)

使用SkiaSharp

?
1
dotnet add package SkiaSharp --version 1.59.3

ASP.NET驗證碼

前使用SkiaSharp實現(xiàn)文本繪圖功能,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
internal static byte[] GetCaptcha(string captchaText)
  {
   byte[] imageBytes = null;
   int image2d_x = 0;
   int image2d_y = 0;
   SKRect size;
   int compensateDeepCharacters = 0;
   using (SKPaint drawStyle = CreatePaint())
   {
    compensateDeepCharacters = (int)drawStyle.TextSize / 5;
    if (System.StringComparer.Ordinal.Equals(captchaText, captchaText.ToUpperInvariant()))
     compensateDeepCharacters = 0;
    size = SkiaHelpers.MeasureText(captchaText, drawStyle);
    image2d_x = (int)size.Width + 10;
    image2d_y = (int)size.Height + 10 + compensateDeepCharacters;
   }
   using (SKBitmap image2d = new SKBitmap(image2d_x, image2d_y, SKColorType.Bgra8888, SKAlphaType.Premul))
   {
    using (SKCanvas canvas = new SKCanvas(image2d))
    {
     canvas.DrawColor(SKColors.Black); // Clear
     using (SKPaint drawStyle = CreatePaint())
     {
      canvas.DrawText(captchaText, 0 + 5, image2d_y - 5 - compensateDeepCharacters, drawStyle);
     }
     using (SKImage img = SKImage.FromBitmap(image2d))
     {
      using (SKData p = img.Encode(SKEncodedImageFormat.Png, 100))
      {
       imageBytes = p.ToArray();
      }
     }
    }
 
   }
   return imageBytes;
  }

ASP.NET Core輸出圖像:

?
1
2
3
4
5
6
[HttpGet("/api/captcha")]
public IActionResult Captcha()
{
 var bytes = SkiaCaptcha.Captcha.GetCaptcha("hello world");
 return File(bytes, "image/png");
}

參考

https://skia.org/index_zh

https://github.com/mono/SkiaSharp

https://developer.xamarin.com/api/namespace/SkiaSharp/

demo地址:https://github.com/maxzhang1985/ASPNETCore_Captcha_Skia

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/maxzhang1985/p/8137199.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产欧美在线人成 | 日本五十路六十30人8时间 | 久草在在线免视频在线观看 | 四虎在线精品免费高清在线 | 高h文恩好大好爽 | 日产欧产va高清 | ts人妖系列在线专区 | 91久久精品青青草原伊人 | 国产精品免费久久久久影院 | 好吊日在线 | 冰漪丰满大乳人体图片欣赏 | 日产精品视频 | 国产麻豆精品免费视频 | 欧美在线视频一区在线观看 | 国产大秀视频一区二区三区 | 四虎影院在线免费观看视频 | 2021国产麻豆剧传媒剧情动漫 | 天天做天天爽天天谢 | 午夜dj影院在线视频观看完整 | 久久精品亚洲国产AV涩情 | 91视频www | 国产高清一区二区三区免费视频 | 日韩精品免费看 | 摸逼小说 | 嫩草在线视频www免费观看 | 亚洲精品国产精麻豆久久99 | 国产麻豆精品视频 | 毛片在线看网站 | 欧美日韩国产精品va | 国产精品露脸国语对白手机视频 | 99国产精品 | 日本中文字幕一区二区高清在线 | 精品国产免费第一区二区 | 三叶草私人研究所 | 精品午夜寂寞影院在线观看 | 日韩精品成人在线 | 午夜神器老司机高清无码 | 毛茸茸的大逼 | 免费在线观看伦理片 | 男男gaygays中国| 精品一久久香蕉国产线看播放 |