See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 38588|Vastuse: 6

[.NET tuum] ASP.NET Core (neliteist) põhineb SkiaSharp pildi captcha peal

[Kopeeri link]
Postitatud 2022-4-4 12:25:53 | | | |
Varem, kui arendati ASP.NET projekte .NET raamistikuga, paigaldati need kõik Windowsi süsteemidele ning neid ei saanud platvormideülesed, seega saab System.Drawing abil genereerida pildi verifitseerimiskoode järgmiselt:

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

WebAPI rakendab graafilist verifitseerimiskoodi funktsiooni
https://www.itsvse.com/thread-7304-1-1.html

Veebipõhiseks arendamiseks .NET Core projektidega, pildicaptchade genereerimine nõuab viitamist System.Drawing.Common teekile, kuid praeguSystem.Drawing.Common NuGet pakett on nüüd rühmitatud järgmiselt:WindowsSpetsiifilised raamatukogud。 Kui kompileerida mitte-Windowsi operatsioonisüsteemidele, hoiatab Platform Analyzer kompileerimise ajal. Nagu näidatud järgmises joonises:

See kõnesait on ligipääsetav kõigil platvormidel. 'Font' on toetatud ainult 'akendel'.



Enne .NET 6 ei tekitanud System.Drawing.Common paketi kasutamine kompileerimisaegseid hoiatusi ega käivitamise erandeid. Alates .NET 6-st väljastab Platform Analyzer kompileerimisaegse hoiatuse, kui kompileeritakse viitekoodi mitte-Windowsi operatsioonisüsteemidele. Samuti, kui konfiguratsioonivalik pole seatud, visatakse järgmine käitusaegne erand:


System.TypeInitializationException : 'Gdip' tüübi initsialiseerija viskas erandi.
      ---- System.PlatformNotSupportedException : System.Drawing.Common ei ole toetatud mitte-Windowsi platvormidel. NägemaHüperlingi sisselogimine on nähtav.Lisainfo saamiseks.
      Stack Trace:
           aadressil System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(stringifailinimi, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): aadressil System.Drawing.Bitmap.. ctor(Stringi failinimi, Boole'i useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): aadressil System.Drawing.Bitmap.. ctor(Stringi failinimi)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): aadressil System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): aadressil System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Sisemise virna jälg -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): aadressil System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): aadressil System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): aadressil System.Drawing.SafeNativeMethods.Gdip.. cctor()

Vea viide:

.NET Core'i vesimärkimise probleemid Linuxi piltidel
https://www.itsvse.com/thread-9605-1-1.html

Platvormideülese pilditöötluse jaoks soovitab Microsofti ametlik dokumentatsioon kasutada järgmisi teeke:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Viide:Hüperlingi sisselogimine on nähtav.

See artikkel kasutab SkiaSharpi teeki graafilise CAPTCHA genereerimiseks,SkiaSharp on platvormideülene 2D graafika API .NET platvormile, mis põhineb Google'i Skia graafikateegil (skia.org).。 See pakub terviklikku 2D API-d, mida saab kasutada mobiili-, serveri- ja lauaarvutimudelites piltide renderdamiseks.

Aadress:Hüperlingi sisselogimine on nähtav.

Esiteks, loo uus ASP.NET Core 6 projekt ja viideSkiaSharpAsjakohased raamatukogud on järgmised:

Pane tähele, et kui projekt tuleb juurutada Linuxi süsteemi, on viited vajalikudSkiaSharp.NativeAssets.Linuxklassi, vastasel juhul on viga järgmine:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
03. aprill 18:51:06 raspberrypi dotnet[6203]: Taotluse täitmisel tekkis käsitlemata erand.
03. aprill 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: 'SkiaSharp.SKImageInfo' tüübi algataja viskas erandi.
03. aprill 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Ei õnnestunud laadida jagatud teeki 'libSkiaSharp' ega selle sõltuvusi. Laadimisprobleemide diagnoosimiseks kaaluge LD_DEBUG keskkonnamuutuja määramist: liblibSkiaSharp: cannot open shared object file: No such file and directory
03. aprill 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
03. aprill 18:51:06 raspberrypi dotnet[6203]: SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Sisemise erandi virna jälje lõpp ---
03. aprill 18:51:06 raspberrypi dotnet[6203]: aadressil HomeCloud.ImageCaptcha.GetCaptcha(string captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) in C: \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:line 184
03. aprill 18:51:06 raspberrypi dotnet[6203]: aadressil HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :rida 80
03. aprill 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Sulgemine, Objekt, Objekt[] )

Selleks, et arvestada, et mõned fondifondid võivad erinevates süsteemides puududa, mistõttu ei saa kontrollikoodi infot normaalselt kuvada, peame fondid käsitsi projekti kopeerima, looma projektis uue fontide kausta ja kopeerima fondid sinna, nagu alloleval joonisel näidatud:



Konfiguratsioon on järgmine:

Internetis olevate viitematerjalide kohaselt on testi graafiline verifitseerimiskood järgmine:



Genereeritud CAPTCHA-l on kaks puudust:CAPTCHA on täiesti must (OCR-i poolt kergesti äratuntav) ja CAPTCHA tähed on tihedalt kokku surutud ilma vahetaNende kahe probleemi lahendamiseks optimeerisin koodi järgmiselt:

HomeControlleri kontrolleri kood on järgmine:

Lõplikud renderdused on järgmised:


Lõpuks lisa fondifail:

Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse


(Lõpp)




Eelmine:[Pööre]. NET 6 Uus funktsioon Enumerable.Chunk()
Järgmine:Angular takistab vanemklõpsu sündmuse käivitamist
 Üürileandja| Postitatud 2022-4-4 12:28:35 |
Läbivaatamine

ASP.NET Core (XIII), et määrata, kas tegemist on Ajaxi taotlusega või mitte
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (kaksteist) front-end JS, CSS-i komplekt ja kompressioon
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) lõpp-punkti marsruut lisab vahetarkvara kõigi DI teenuste kuvamiseks
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Konfiguratsiooni prioriteetide üksikasjalik selgitus Core(10)-s.
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Põhjalik selgitus Core'i (9) Middleware'i vahendustarkvara kohta.
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Core Middleware'i üksikasjalik selgitus
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Swaggeri kasutajaliidese vaikimisi parameetrite auk Core(8)-s.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Raamistiku lähtekoodi põhjalik analüüs
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI saab käsitsi objektide süstimise meetodi
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (viis) põhineb CAP hajutatud tehingutel
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filter ühtlustatud ModelState mudeli valideerimine
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dünaamiliselt loo instantse ActivatorUtilities abil
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Taaskäivita rakendus koodi järgi
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) kasutab Redis vahemällu salvestamist
https://www.itsvse.com/thread-9393-1-1.html
Postitatud 2022-4-4 15:02:24 |
Õpi õppima
Postitatud 2022-4-13 08:58:42 |
See on hea, mulle meeldib. Aitäh jagamast!
Postitatud 2022-4-14 09:46:41 |
Õpi suure mehe tööd, aitäh jagamast
Postitatud 2022-8-5 16:25:05 |
Ülemus on kõvasti tööd teinud
 Üürileandja| Postitatud 2024-11-25 10:33:43 |
SixLabors.ImageSharp on ka suurepärane teek platvormideüleseks pilditöötluseks
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com