Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 38588|Svare: 6

[.NET Core] ASP.NET Core (fjorten) er basert på SkiaSharp-bildecaptchaen

[Kopier lenke]
Publisert 4.4.2022 12:25:53 | | | |
Tidligere, når man utviklet ASP.NET prosjekter med .NET Framework, ble de alle distribuert på Windows-systemer, og de kunne ikke være plattformuavhengige, så du kan bruke System.Drawing til å generere bildeverifiseringskoder, som følger:

asp.net MVC vakker bilde captcha
https://www.itsvse.com/thread-4911-1-1.html

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

Ved å utvikle online med .NET Core-prosjekter krever generering av bildecaptchaer referanse til System.Drawing.Common-biblioteket, men foreløpigSystem.Drawing.Common NuGet-pakken er nå gruppert som:WindowsSpesifikke biblioteker。 Når man kompilerer for ikke-Windows-operativsystemer, advarer Platform Analyzer ved kompilering. Som vist i følgende figur:

Denne samtalesiden er tilgjengelig på alle plattformer. 'Font' støttes kun på 'windows'.



Før .NET 6 genererte bruken av System.Drawing.Common-pakken ingen kompilasjonstidsadvarsler og kastet ingen runtime-unntak. Fra og med .NET 6 gir Platform Analyzer en kompileringstidsadvarsel når referansekode for ikke-Windows-operativsystemer kompileres. I tillegg, med mindre konfigurasjonsvalget er satt, vil følgende runtime-unntak bli kastet:


System.TypeInitializationException: Typeinitializeren for 'Gdip' kastet et unntak.
      ---- System.PlatformNotSupportedException : System.Drawing.Common støttes ikke på ikke-Windows-plattformer. SeInnloggingen med hyperkoblingen er synlig.For mer informasjon.
      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, boolsk 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()
        ----- Inner Stack Trace -----
        /_/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()

Feilreferanse:

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

For plattformuavhengig bildebehandling anbefaler Microsofts offisielle dokumentasjon bruk av følgende biblioteker:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Referanse:Innloggingen med hyperkoblingen er synlig.

Denne artikkelen bruker SkiaSharp-biblioteket for å generere grafisk CAPTCHA,SkiaSharp er et plattformuavhengig 2D-grafikk-API for .NET-plattformen basert på Googles Skia-grafikkbibliotek (skia.org).。 Den tilbyr et omfattende 2D-API som kan brukes på tvers av mobil-, server- og skrivebordsmodeller for å gjengi bilder.

Adresse:Innloggingen med hyperkoblingen er synlig.

Først, opprett et nytt ASP.NET Core 6-prosjekt og referanseSkiaSharpDe relevante bibliotekene er som følger:

Merk at hvis prosjektet må distribueres til et Linux-system, kreves referanserSkiaSharp.NativeAssets.Linuxklasse, ellers vil feilen 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]: Et ubehandlet unntak har oppstått under utførelsen av forespørselen.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Typeinitializeren for 'SkiaSharp.SKImageInfo' kastet et unntak.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Kan ikke laste delt bibliotek 'libSkiaSharp' eller en av dets avhengigheter. For å hjelpe med å diagnostisere lasteproblemer, vurder å sette LD_DEBUG miljøvariabelen: libSkiaSharp: kan ikke åpne delt objektfil: Ingen slik fil eller katalog
03. april 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]: --- Slutt på indre unntaksstack trace ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: på HomeCloud.ImageCaptcha.GetCaptcha(Streng captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) i C: \Users\itsvse_pc\source\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 å kunne ta hensyn til at noen fontfonter kan mangle i ulike systemer, noe som resulterer i manglende evne til å vise verifiseringskodeinformasjon normalt, må vi manuelt kopiere fontene inn i prosjektet, opprette en ny fontmappe i prosjektet, og kopiere fontene inn i den, som vist i figuren nedenfor:



Konfigurasjonen er som følger:

Ifølge referansematerialet på Internett er den grafiske verifiseringskoden som genereres av testen som følger:



Den genererte CAPTCHA har to ulemper:CAPTCHA er helt svart (lett gjenkjennelig av OCR), og CAPTCHA-bokstavene er tett sammen uten mellomromFor å løse disse to problemene optimaliserte jeg koden slik:

HomeController-kontrollerkoden er som følger:

De endelige gjengivelsene er som følger:


Til slutt, legg ved fontfilen:

Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snillSvare


(Slutt)




Foregående:[Snu]. NET 6 Ny funksjon Enumerable.Chunk()
Neste:Angular forhindrer at foreldreklikk-hendelsen utløses
 Vert| Publisert 4.04.2022 kl. 12:28:35 |
anmeldelse

ASP.NET Core (XIII) for å avgjøre om det er en Ajax-forespørsel eller ikke
https://www.itsvse.com/thread-10284-1-1.html

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

ASP.NET Core (XI) endepunktruten legger til mellomvare for å vise alle DI-tjenester
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaljert forklaring av konfigurasjonsprioriteringer i Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaljert forklaring av mellomvare-mellomvaren i Core (9).
https://www.itsvse.com/thread-9647-1-1.html

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

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

ASP.NET Kjerne (7) Grundig analyse av rammeverkets kildekode
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI henter manuelt metoden for å injisere objekter
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fem) er basert på CAP-distribuerte transaksjoner
https://www.itsvse.com/thread-9593-1-1.html

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

ASP.NET Core (iii) Opprett instanser dynamisk ved hjelp av ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Start applikasjonen på nytt via kode
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) bruker Redis-caching
https://www.itsvse.com/thread-9393-1-1.html
Publisert 4.4.2022 kl. 15:02:24 |
Lær å lære
Publisert 13.04.2022 08:58:42 |
Dette er bra, jeg liker det. Takk for at du delte!
Publisert 14.04.2022 09:46:41 |
Lær deg hvordan den store fyren fungerer, takk for at du delte
Publisert 5.08.2022 kl. 16:25:05 |
Sjefen har jobbet hardt
 Vert| Publisert 2024-11-25 10:33:43 |
SixLabors.ImageSharp er også et flott bibliotek for plattformuavhengig bildebehandling
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com