Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 38588|Svar: 6

[.NET Core] ASP.NET Core (fjorten) er baseret på SkiaSharp-billedcaptchaen

[Kopier link]
Opslået den 4-4-2022 12:25:53 | | | |
Tidligere, når ASP.NET projekter udvikles med .NET Framework, blev de alle implementeret på Windows-systemer, og de kunne ikke være platformoverskridende, så du kan bruge System.Drawing til at generere billedverifikationskoder, som følger:

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

WebAPI implementerer grafisk verifikationskodefunktion
https://www.itsvse.com/thread-7304-1-1.html

Udvikling online med .NET Core-projekter og generering af billedcaptchaer kræver reference til System.Drawing.Common-biblioteket, men for nuSystem.Drawing.Common NuGet-pakken er nu grupperet som:WindowsSpecifikke biblioteker。 Når man kompilerer til ikke-Windows operativsystemer, advarer Platform Analyzer ved kompilering. Som vist i følgende figur:

Denne opkaldsside er tilgængelig på alle platforme. 'Font' understøttes kun på 'windows'.



Før .NET 6 genererede brugen af System.Drawing.Common-pakken ingen compile-time advarsler og kastede ingen runtime-undtagelser. Fra og med .NET 6 udsender Platform Analyzer en kompileringstidsadvarsel, når referencekode kompileres til ikke-Windows-operativsystemer. Desuden, medmindre konfigurationsmuligheden er sat, vil følgende runtime-undtagelse blive kastet:


System.TypeInitializationException : Typeinitializeren for 'Gdip' kastede en undtagelse.
      ---- System.PlatformNotSupportedException : System.Drawing.Common understøttes ikke på ikke-Windows-platforme. SeHyperlink-login er synlig.For mere information.
      Stack Trace:
           på System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Strengfilnavn, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): på System.Drawing.Bitmap.. ctor(Strengfilnavn, boolesk useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): på System.Drawing.Bitmap.. ctor(Strengfilnavn)
        /_/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()
        ----- Indre Stakspor -----
        /_/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()

Fejlreference:

.NET Core-vandmærkningsproblemer på Linux-billeder
https://www.itsvse.com/thread-9605-1-1.html

For tværplatformsbaseret billedbehandling anbefaler Microsofts officielle dokumentation brugen af følgende biblioteker:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Henvisning:Hyperlink-login er synlig.

Denne artikel bruger SkiaSharp-biblioteket til at generere grafisk CAPTCHA,SkiaSharp er et cross-platform 2D grafik-API til .NET-platformen baseret på Googles Skia grafikbibliotek (skia.org).。 Den tilbyder et omfattende 2D-API, der kan bruges på tværs af mobile, server- og desktopmodeller til at gengive billeder.

Adresse:Hyperlink-login er synlig.

Først skal du oprette et nyt ASP.NET Core 6-projekt og referenceSkiaSharpDe relevante biblioteker er som følger:

Bemærk, at hvis projektet skal implementeres på et Linux-system, kræves referencerSkiaSharp.NativeAssets.Linuxklasse, ellers vil fejlen være som følger:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: En uhåndteret undtagelse er opstået under udførelsen af forespørgslen.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Typeinitializeren for 'SkiaSharp.SKImageInfo' kastede en undtagelse.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Kan ikke indlæse det delte bibliotek 'libSkiaSharp' eller en af dets afhængigheder. For at hjælpe med at diagnosticere indlæsningsproblemer, overvej at sætte LD_DEBUG miljøvariabelen: libSkiaSharp: kan ikke åbne delt objektfil: Ingen sådan fil eller mappe
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å indre undtagelsesstak trace ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: hos HomeCloud.ImageCaptcha.GetCaptcha(Streng captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) i C: \Brugere\itsvse_pc\kilde\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:linje 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 :linje 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Closure , Object , Object[] )

For at kunne overveje, at nogle skrifttypetyper kan mangle under forskellige systemer, hvilket resulterer i manglende evne til normalt at vise verifikationskodeinformation, skal vi manuelt kopiere skrifttyperne ind i projektet, oprette en ny skrifttypemappe i projektet og kopiere skrifttyperne ind i den, som vist i figuren nedenfor:



Konfigurationen er som følger:

Ifølge referencematerialet på internettet er den grafiske verifikationskode, der genereres af testen, som følger:



Den genererede CAPTCHA har to ulemper:CAPTCHA er helt sort (let genkendt af OCR), og CAPTCHA-bogstaverne er presset sammen uden nogen afstandFor at løse disse to problemer optimerede jeg koden således:

HomeController-controllerkoden er som følger:

De endelige gengivelser er som følger:


Endelig vedhæfter du skrifttypefilen:

Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venligSvar


(Slut)




Tidligere:[Drej]. NET 6 Ny funktion Enumerable.Chunk()
Næste:Angular forhindrer udløsning af forældreklik-begivenheden
 Udlejer| Opslået den 4-4-2022 12:28:35 |
anmeldelse

ASP.NET Core (XIII) for at afgøre, om det er en Ajax-anmodning eller ej
https://www.itsvse.com/thread-10284-1-1.html

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

ASP.NET Core (XI) endpoint-ruten tilføjer middleware til at vise alle DI-tjenester
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaljeret forklaring af konfigurationsprioriteter i Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaljeret forklaring af Middleware-middleware i Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Detaljeret forklaring af Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET grube med standardparametrene i Swagger-brugerfladen i Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Dybdegående analyse af frameworkets kildekode
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI henter manuelt metoden til at injicere objekter
https://www.itsvse.com/thread-9595-1-1.html

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

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

ASP.NET Core (iii) Opret dynamisk instanser ved hjælp af ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Genstart applikationen ved at kode
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) bruger Redis-caching
https://www.itsvse.com/thread-9393-1-1.html
Opslået den 4-4-2022 15:02:24 |
Lær at lære
Opslået den 2022-4-13 08:58:42 |
Det er godt, jeg kan godt lide det. Tak fordi du delte!
Opslået den 14-04-2022 09:46:41 |
Lær den store fyrs funktion at kende, tak fordi du delte
Opslået den 5-8-2022 16:25:05 |
Chefen har arbejdet hårdt
 Udlejer| Opslået den 25-11-2024 10:33:43 |
SixLabors.ImageSharp er også et fremragende bibliotek til cross-platform billedbehandling
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com