Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 38588|Svar: 6

[.NET Core] ASP.NET Core (fjorton) är baserad på SkiaSharp-bildcaptchan

[Kopiera länk]
Publicerad den 4-4-2022 12:25:53 | | | |
Tidigare, när man utvecklade ASP.NET projekt med .NET Framework, distribuerades de alla på Windows-system och de kunde inte vara plattformsoberoende, så du kan använda System.Drawing för att generera bildverifieringskoder, enligt följande:

asp.net mvc vacker bild captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementerar grafisk verifieringskodfunktion
https://www.itsvse.com/thread-7304-1-1.html

Att utveckla online med .NET Core-projekt kräver bildkaptcha referens till System.Drawing.Common-biblioteket, men för tillfället krävs det referens till System.Drawing.Common-biblioteketSystem.Drawing.Common NuGet-paketet är nu grupperat som:WindowsSpecifika bibliotek。 Vid kompilering för icke-Windows-operativsystem varnar Platform Analyzer vid kompileringstillfället. Som visas i följande figur:

Denna samtalssida är tillgänglig på alla plattformar. 'Font' stöds endast på 'windows'.



Före .NET 6 genererade användningen av System.Drawing.Common-paketet inga kompileringsvarningar och gav inga runtime-undantag. Från och med .NET 6 ger Platform Analyzer en kompileringsvarning vid kompilering av referenskod för icke-Windows-operativsystem. Dessutom, om inte konfigurationsalternativet är satt, kommer följande runtime-undantag att kastas:


System.TypeInitializationException: Typinitialiseraren för 'Gdip' gav ett undantag.
      ---- System.PlatformNotSupportedException : System.Drawing.Common stöds inte på plattformar utanför Windows. SeInloggningen med hyperlänken är synlig.för mer information.
      Stackspårning:
           på System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Strängfilnamn, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): på System.Drawing.Bitmap.. ctor(Strängfilnamn, boolesk useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): på System.Drawing.Bitmap.. ctor(Strängfilnamn)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): på System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): på System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- inre stackspårning -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): på System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): på System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): på System.Drawing.SafeNativeMethods.Gdip.. cctor()

Felreferens:

.NET Core-vattenmärkningsproblem på Linux-bilder
https://www.itsvse.com/thread-9605-1-1.html

För plattformsoberoende bildbehandling rekommenderar Microsofts officiella dokumentation att använda följande bibliotek:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Hänvisning:Inloggningen med hyperlänken är synlig.

Den här artikeln använder SkiaSharp-biblioteket för att generera grafisk CAPTCHA,SkiaSharp är ett plattformsoberoende 2D-grafik-API för .NET-plattformen baserat på Googles Skia-grafikbibliotek (skia.org).。 Det erbjuder ett omfattande 2D-API som kan användas över mobila, server- och skrivbordsmodeller för att rendera bilder.

Adress:Inloggningen med hyperlänken är synlig.

Först, skapa ett nytt ASP.NET Core 6-projekt och referensSkiaSharpDe relevanta biblioteken är följande:

Observera att om projektet behöver distribueras till ett Linux-system krävs referenserSkiaSharp.NativeAssets.Linuxklass, annars kommer felet att vara följande:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Ett ohanterat undantag har inträffat vid exekveringen av förfrågan.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Typinitialiseraren för 'SkiaSharp.SKImageInfo' gav ett undantag.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Kan inte ladda det delade biblioteket 'libSkiaSharp' eller någon av dess beroenden. För att hjälpa till att diagnostisera laddningsproblem bör du överväga att ställa in LD_DEBUG miljövariabeln: libSkiaSharp: kan inte öppna delad objektfil: Ingen sådan fil eller katalog
03 apr 18:51:06 raspberrypi dotnet[6203]: på SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: på SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Slut på inre undantagsstackspår ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: på HomeCloud.ImageCaptcha.GetCaptcha(Sträng captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) i C: \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:rad 184
Apr 03 18:51:06 raspberrypi dotnet[6203]: på HomeCloud.Controllers.HomeController.Test() i C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :rad 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: vid lambda_method34(Closure , Object , Object[] )

För att kunna betrakta att vissa typsnitt kan saknas i olika system, vilket leder till att verifieringskodsinformation inte kan visas normalt, behöver vi manuellt kopiera typsnitten till projektet, skapa en ny typsnittsmapp i projektet och kopiera typsnitten dit, som visas i figuren nedan:



Konfigurationen är följande:

Enligt referensmaterialet på internet är den grafiska verifieringskoden som genereras av testet följande:



Den genererade CAPTCHA har två nackdelar:CAPTCHA är helt svart (lätt igenkännbar av OCR), och CAPTCHA-bokstäverna är trängda tillsammans utan något avståndFör att lösa dessa två problem optimerade jag koden enligt följande:

HomeController-kontrollerkoden är följande:

De slutliga renderingarna är följande:


Slutligen, bifoga typsnittsfilen:

Turister, om ni vill se det dolda innehållet i detta inlägg, snällaSvar


(Slut)




Föregående:[Vänd]. NET 6 Ny funktion Enumerable.Chunk()
Nästa:Angular förhindrar att föräldraklicket triggas
 Hyresvärd| Publicerad den 4 april 2022 12:28:35 |
recension

ASP.NET Core (XIII) för att avgöra om det är en Ajax-förfrågan eller inte
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (tolv) front-end JS, CSS-paketering och komprimering
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) endpoint-rutten lägger till middleware för att visa alla DI-tjänster
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaljerad förklaring av konfigurationsprioriteringar i Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaljerad förklaring av Middleware-middleware i Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Detaljerad förklaring av Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET gropen med standardparametrarna i Swagger UI i Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Djupgående analys av ramverkets källkod
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI hämtar manuellt metoden för att injicera objekt
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fem) baseras på CAP-distribuerade transaktioner
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-filter enhetlig ModelState-modellvalidering
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Skapa instanser dynamiskt med hjälp av ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Starta om applikationen via kod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) använder Redis-cachelagring
https://www.itsvse.com/thread-9393-1-1.html
Publicerad den 2022-4-4 15:02:24 |
Lär dig att lära dig
Publicerad den 2022-4-13 08:58:42 |
Det här är bra, jag gillar det. Tack för att du delade med dig!
Publicerad den 2022-4-14 09:46:41 |
Lär dig hur den stora killen fungerar, tack för att du delar med dig
Publicerad den 2022-8-5 16:25:05 |
Chefen har jobbat hårt
 Hyresvärd| Publicerad 2024-11-25 10:33:43 |
SixLabors.ImageSharp är också ett utmärkt bibliotek för plattformsoberoende bildbehandling
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com