Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 38588|Atbildi: 6

[.NET kodols] ASP.NET Core (četrpadsmit) ir balstīts uz SkiaSharp attēlu captcha

[Kopēt saiti]
Publicēts 2022-4-4 12:25:53 | | | |
Agrāk, izstrādājot ASP.NET projektus, izmantojot .NET Framework, tie visi tika izvietoti Windows sistēmās, un tie nevarēja būt starpplatformas, tāpēc varat izmantot System.Drawing, lai ģenerētu attēlu verifikācijas kodus šādi:

asp.net mvc skaists attēls captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI ievieš grafiskās verifikācijas koda funkciju
https://www.itsvse.com/thread-7304-1-1.html

Izstrādājot tiešsaistē ar .NET Core projektiem, attēlu captchas ģenerēšanai ir nepieciešama atsauce uz System.Drawing.Common bibliotēku, bet pagaidāmSystem.Drawing.Common NuGet pakotne tagad ir grupēta kā:WindowsĪpašas bibliotēkas。 Kompilējot operētājsistēmām, kas nav Windows, platformas analizators brīdina kompilācijas laikā. Kā parādīts nākamajā attēlā:

Šī zvanīšanas vietne ir pieejama visās platformās. 'Fonts' tiek atbalstīts tikai 'Windows'.



Pirms .NET 6, izmantojot System.Drawing.Common pakotni, netika ģenerēti nekādi kompilācijas laika brīdinājumi un netika radīti izpildlaika izņēmumi. Sākot ar .NET 6, platformas analizators izdod kompilācijas laika brīdinājumu, kompilējot atsauces kodu operētājsistēmām, kas nav Windows. Turklāt, ja nav iestatīta konfigurācijas opcija, tiks izmests šāds izpildlaika izņēmums:


System.TypeInitializationException : 'Gdip' tipa inicializators radīja izņēmumu.
      ---- System.PlatformNotSupportedException : System.Drawing.Common netiek atbalstīts platformās, kas nav Windows. RedzētHipersaites pieteikšanās ir redzama.lai iegūtu vairāk informācijas.
      Steka izsekošana:
           vietnē System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Virknes faila nosaukums, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): vietnē System.Drawing.Bitmap.. ctor(Virknes faila nosaukums, Būla lietojumsIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): vietnē System.Drawing.Bitmap.. ctor(Virknes faila nosaukums)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): vietnē System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ Pārvietot nākamo ()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): vietnē System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Iekšējās steka izsekošanas -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): vietnē System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): vietnē System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): vietnē System.Drawing.SafeNativeMethods.Gdip.. cctor()

Kļūdas atsauce:

.NET Core ūdenszīmes problēmas Linux attēlos
https://www.itsvse.com/thread-9605-1-1.html

Vairāku platformu attēlu apstrādei Microsoft oficiālajā dokumentācijā ir ieteikts izmantot šādas bibliotēkas:

  • AttēlsSharp
  • SkiaSharp
  • Microsoft.Maui.Grafika

Atsauce:Hipersaites pieteikšanās ir redzama.

Šajā rakstā tiek izmantota SkiaSharp bibliotēka, lai ģenerētu grafisko CAPTCHA,SkiaSharp ir starpplatformu 2D grafikas API .NET platformai, kuras pamatā ir Google Skia grafikas bibliotēka (skia.org).。 Tas piedāvā visaptverošu 2D API, ko attēlu atveidošanai var izmantot mobilajos, serveru un darbvirsmas modeļos.

Adrese:Hipersaites pieteikšanās ir redzama.

Vispirms izveidojiet jaunu ASP.NET Core 6 projektu un atsauciSkiaSharpAttiecīgās bibliotēkas ir šādas:

Ņemiet vērā, ka, ja projekts ir jāizvieto Linux sistēmā, ir nepieciešamas atsaucesSkiaSharp.NativeAssets.Linuxklase, pretējā gadījumā kļūda būs šāda:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Pieprasījuma izpildes laikā ir radies neapstrādāts izņēmums.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: 'SkiaSharp.SKImageInfo' tipa inicializators izmeta izņēmumu.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Nevar ielādēt koplietojamo bibliotēku "libSkiaSharp" vai kādu no tās atkarībām. Lai palīdzētu diagnosticēt ielādes problēmas, apsveriet iespēju iestatīt LD_DEBUG vides mainīgo: liblibSkiaSharp: nevar atvērt koplietojamā objekta failu: nav šāda faila vai direktorija
Apr 03 18:51:06 raspberrypi dotnet[6203]: pie SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: pie SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Iekšējā izņēmuma steka izsekošanas beigas ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) in C: \Lietotāji\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:line 184
Apr 03 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :80. rinda
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Slēgšana , Objekts , Objekts[] )

Lai ņemtu vērā, ka dažās sistēmās var trūkt dažu fontu fontu, kā rezultātā nav iespējams normāli parādīt verifikācijas koda informāciju, mums ir manuāli jākopē fonti projektā, projektā jāizveido jauna fontu mape un jākopē fonti, kā parādīts zemāk redzamajā attēlā:



Konfigurācija ir šāda:

Saskaņā ar atsauces materiāliem internetā testa ģenerētais grafiskais verifikācijas kods ir šāds:



Ģenerētajam CAPTCHA ir divi trūkumi:CAPTCHA ir melns (viegli atpazīstams ar OCR), un CAPTCHA burti ir pārpildīti kopā bez atstarpēmLai atrisinātu šīs divas problēmas, es optimizēju kodu šādi:

HomeController kontrollera kods ir šāds:

Galīgie atveidojumi ir šādi:


Visbeidzot, pievienojiet fonta failu:

Tūristi, ja vēlaties redzēt šīs ziņas slēpto saturu, lūdzuAtbildi


(Beigas)




Iepriekšējo:[Pagrieziens]. NET 6 Jauna funkcija Enumerable.Chunk()
Nākamo:Angular novērš vecākklikšķa notikuma aktivizēšanu
 Saimnieks| Publicēts 2022-4-4 12:28:35 |
Pārskats

ASP.NET Core (XIII), lai noteiktu, vai tas ir Ajax pieprasījums vai nē
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (divpadsmit) priekšgala JS, CSS komplektēšana un saspiešana
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) galapunkta maršruts pievieno starpprogrammatūru, lai parādītu visus DI pakalpojumus
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detalizēts skaidrojums par konfigurācijas prioritātēm kodolā [10].
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detalizēts skaidrojums par Core starpprogrammatūru (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Detalizēts skaidrojums par pamata starpprogrammatūru
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Swagger lietotāja interfeisa noklusējuma parametru bedre Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Sistēmas pirmkoda padziļināta analīze
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI manuāli iegūst objektu injicēšanas metodi
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (pieci) ir balstīts uz CAP sadalītajiem darījumiem
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filtra vienotā ModelState modeļa validācija
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamiski izveidojiet instances, izmantojot ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET kodols (2) Restartējiet lietojumprogrammu pēc koda
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) izmanto Redis kešatmiņu
https://www.itsvse.com/thread-9393-1-1.html
Publicēts 2022-4-4 15:02:24 |
Iemācieties mācīties
Publicēts 2022-4-13 08:58:42 |
Tas ir labi, man tas patīk. Paldies, ka dalījāties!
Publicēts 2022-4-14 09:46:41 |
Uzziniet par lielā puiša darbību, paldies, ka dalījāties
Publicēts 2022-8-5 16:25:05 |
Priekšnieks ir smagi strādājis
 Saimnieks| Publicēts 2024-11-25 10:33:43 |
SixLabors.ImageSharp ir arī lieliska bibliotēka starpplatformu attēlu apstrādei
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com