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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91香蕉视频在线 | 国产精品毛片va一区二区三区 | 亚州免费一级毛片 | 免费高清视频日本 | 久久综合狠狠综合久久综合88 | 亚洲精品第二页 | 顶级尤物极品女神福利视频 | 波多野结衣中文字幕 | 国产成人综合亚洲一区 | 91久久精品国产一区二区 | 火影小南被爆羞羞网站 | 成年人免费观看视频网站 | 午夜片神马影院福利 | 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 高h文恩好大好爽 | 免费网站看v片在线成人国产系列 | 无敌在线视频观看免费 | 国产精品合集一区二区 | 亚洲天堂免费观看 | 91精品国产一区 | 亚洲激情在线 | 日本漫画无翼乌 | 亚洲精品久久久久69影院 | 亚洲乱码一区二区三区国产精品 | 边摸边吃奶边做爽视频免费 | 亚洲AV久久久久久久无码 | 女生被爆操| blackedhd 18sex| 99这里只有精品在线 | 亚洲国产精品久久卡一 | 新新电影理论中文字幕 | 成人男女啪啪免费观看网站 | 亚洲人成网站在线观看播放青青 | 色狼屋| 四虎网站网址 | 亚洲国产精品二区久久 | 日本在线观看视频网站 | 亚洲swag精品自拍一区 | 大陆国产精品视频 | 国产90后美女露脸在线观看 | 色网免费观看 |