Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 38588|Odgovoriti: 6

[.NET Core] ASP.NET Core (štirinajst) temelji na SkiaSharp image captcha

[Kopiraj povezavo]
Objavljeno 4. 4. 2022 ob 12:25:53 | | | |
Prej so bili pri razvoju ASP.NET projektov z uporabo .NET Framework vsi nameščeni na Windows sistemih in niso mogli biti večplatformski, zato lahko uporabite System.Drawing za generiranje kod za preverjanje slik, kot sledi:

asp.net MVC čudovita slika captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementira funkcijo grafične verifikacijske kode
https://www.itsvse.com/thread-7304-1-1.html

Za spletni razvoj z .NET Core projekti je za generiranje slikovnih captcha potrebna referenca na knjižnico System.Drawing.Common, vendar za zdajPaket System.Drawing.Common NuGet je zdaj združen kot:WindowsSpecifične knjižnice。 Pri prevajanju za operacijske sisteme, ki niso Windows, Platform Analyzer opozori med prevajanjem. Kot je prikazano na naslednji sliki:

Ta klicna stran je dostopna na vseh platformah. 'Font' je podprt samo na 'Windows'.



Pred .NET 6 uporaba paketa System.Drawing.Common ni generirala nobenih opozoril med prevajanjem in ni vrgla nobenih izjem med izvajanjem. Od .NET 6 naprej Platform Analyzer pri prevajanju referenčne kode za operacijske sisteme, ki niso Windows, izda opozorilo o času prevajanja. Prav tako, če konfiguracijska možnost ni nastavljena, se med izvajanjem sproži naslednja izjema:


System.TypeInitializationException : Inicializator tipa za 'Gdip' je vrgel izjemo.
      ---- System.PlatformNotSupportedException : System.Drawing.Common ni podprt na ne-Windows platformah. VidetiPrijava do hiperpovezave je vidna.za več informacij.
      Stack Trace:
           na System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Ime datoteke nizov, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): na System.Drawing.Bitmap.. ctor(String file name, Boolean useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): na System.Drawing.Bitmap.. ctor(String datotečno ime)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): na System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): na System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Inner Stack Trace -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): na System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): na System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): na System.Drawing.SafeNativeMethods.Gdip.. cctor()

Referenca na napako:

Težave z vodnimi žigi pri .NET Core na slikah Linuxa
https://www.itsvse.com/thread-9605-1-1.html

Za obdelavo slik na več platformah Microsoftova uradna dokumentacija priporoča uporabo naslednjih knjižnic:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Referenčni:Prijava do hiperpovezave je vidna.

Ta članek uporablja knjižnico SkiaSharp za generiranje grafičnega CAPTCHA,SkiaSharp je večplatformski 2D grafični API za platformo .NET, ki temelji na Googlovi grafični knjižnici Skia (skia.org).。 Ponuja celovit 2D API, ki ga je mogoče uporabljati na mobilnih, strežniških in namiznih modelih za upodabljanje slik.

Naslov:Prijava do hiperpovezave je vidna.

Najprej ustvarite nov projekt ASP.NET Core 6 in referencoSkiaSharpRelevantne knjižnice so naslednje:

Upoštevajte, da če je treba projekt namestiti na Linux sistem, so potrebne referenceSkiaSharp.NativeAssets.Linuxrazred, sicer bo napaka naslednja:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
3. april 18:51:06 raspberrypi dotnet[6203]: Med izvajanjem zahteve je prišlo do neobdelane izjeme.
3. april 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Inicializator za 'SkiaSharp.SKImageInfo' je vrgel izjemo.
3. april 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Ni mogoče naložiti skupne knjižnice 'libSkiaSharp' ali katere od njenih odvisnosti. Da bi lažje diagnosticirali težave z nalaganjem, razmislite o nastavitvi LD_DEBUG okoljske spremenljivke: liblibSkiaSharp: ne more odpreti datoteke deljenih objektov: Ni takšne datoteke ali mape
3. april 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
3. april 18:51:06 raspberrypi dotnet[6203]: na SkiaSharp.SKImageInfo:. cctor()
3. april 18:51:06 raspberrypi dotnet[6203]: --- Konec inner exception stack trace ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) v C: \Uporabniki\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:linija 184
3. april 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.Controllers.HomeController.Test() v C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :linija 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Closure , Object , Object[] )

Da bi upoštevali, da nekatere pisave morda manjkajo v različnih sistemih, kar pomeni nemožnost običajnega prikaza informacij o verifikacijski kodi, moramo pisave ročno kopirati v projekt, ustvariti novo mapo pisav v projektu in vanjo kopirati pisave, kot je prikazano na spodnji sliki:



Konfiguracija je naslednja:

Po referenčnih materialih na internetu je grafična verifikacijska koda, ki jo generira test, naslednja:



Generirani CAPTCHA ima dve slabosti:CAPTCHA je povsem črn (OCR ga zlahka prepozna), črke CAPTCHA pa so stisnjene skupaj brez kakršnegakoli razmikaDa bi rešil ti dve težavi, sem kodo optimiziral na naslednji način:

Koda krmilnika HomeController je naslednja:

Končne upodobitve so naslednje:


Na koncu priložite datoteko pisave:

Turisti, če želite videti skrito vsebino te objave, prosimOdgovoriti


(Konec)




Prejšnji:[Obrat]. NET 6 Nova funkcija Enumerable.Chunk()
Naslednji:Angular preprečuje sprožitev dogodka klika starša
 Najemodajalec| Objavljeno 4. 4. 2022 ob 12:28:35 |
pregled

ASP.NET Core (XIII), da ugotovi, ali gre za Ajaxovo zahtevo ali ne
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvanajst) sprednji JS, CSS združevanje in stiskanje
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) končna pot doda vmesno programsko opremo za prikaz vseh DI storitev
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Podrobna razlaga konfiguracijskih prioritet v Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Podrobna razlaga middleware vmesne programske opreme Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Podrobna razlaga osnovne vmesne programske opreme
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET privzetih parametrov uporabniškega vmesnika Swagger v Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Jedro (7) Poglobljena analiza izvorne kode ogrodja
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI ročno pridobi metodo vbrizgavanja objektov
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (pet) temelji na CAP distribuiranih transakcijah
https://www.itsvse.com/thread-9593-1-1.html

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

ASP.NET Jedro (iii) Dinamično ustvarjanje instanc z uporabo ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Jedro (2) Ponovni zagon aplikacije s kodo
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) uporablja Redis predpomnjenje
https://www.itsvse.com/thread-9393-1-1.html
Objavljeno 4. 4. 2022 ob 15:02:24 |
Uči se učiti
Objavljeno 13. 4. 2022 ob 08:58:42 |
To je dobro, všeč mi je. Hvala, ker si delil!
Objavljeno 2022-4-14 09:46:41 |
Naučite se delovanja velikega fanta, hvala za deljenje
Objavljeno 5. 8. 2022 ob 16:25:05 |
Šef je trdo delal
 Najemodajalec| Objavljeno 25. 11. 2024 ob 10:33:43 |
SixLabors.ImageSharp je tudi odlična knjižnica za večplatformno obdelavo slik
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com