Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 38588|Atsakyti: 6

[.NET branduolys] "ASP.NET Core" (keturiolika) yra pagrįstas "SkiaSharp" vaizdo captcha

[Kopijuoti nuorodą]
Publikuota: 2022-4-4 12:25:53 | | | |
Anksčiau, kuriant ASP.NET projektus naudojant .NET Framework, jie visi buvo įdiegti "Windows" sistemose ir negalėjo būti kelių platformų, todėl galite naudoti System.Drawing vaizdo tikrinimo kodams generuoti taip:

asp.net mvc gražus vaizdas captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI įgyvendina grafinio patvirtinimo kodo funkciją
https://www.itsvse.com/thread-7304-1-1.html

Kuriant internete su .NET Core projektais, norint generuoti vaizdų captchas, reikia nuorodos į System.Drawing.Common biblioteką, bet kol kasSystem.Drawing.Common NuGet paketas dabar sugrupuotas kaip:WindowsKonkrečios bibliotekos。 Kompiliuojant ne "Windows" operacinėms sistemoms, platformos analizatorius įspėja kompiliavimo metu. Kaip parodyta šiame paveikslėlyje:

Ši skambinimo svetainė pasiekiama visose platformose. "Šriftas" palaikomas tik "Windows".



Prieš .NET 6 naudojant System.Drawing.Common paketą nebuvo generuojami jokie kompiliavimo laiko įspėjimai ir nepateikiamos jokios vykdymo laiko išimtys. Pradedant nuo .NET 6, platformos analizatorius pateikia kompiliavimo laiko įspėjimą, kai kompiliuoja ne "Windows" operacinių sistemų nuorodos kodą. Be to, jei nenustatyta konfigūracijos parinktis, bus pateikta ši vykdymo laiko išimtis:


System.TypeInitializationException : Gdip tipo iniciatorius pateikė išimtį.
      ---- System.PlatformNotSupportedException : System.Drawing.Common nepalaikoma ne Windows platformose. MatytiHipersaito prisijungimas matomas.Norėdami gauti daugiau informacijos.
      Rietuvės sekimas:
           System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Eilutės failo pavadinimas, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): System.Drawing.Bitmap.. ctor(Eilutės failo pavadinimas, Bulio logikos naudojimasIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): System.Drawing.Bitmap.. ctor(Eilutės failo pavadinimas)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): adresu System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ PerkeltiKitas()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- vidinio rietuvės sekimo -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): System.Drawing.SafeNativeMethods.Gdip.. cctor()

Klaidos nuoroda:

.NET Core vandens ženklų problemos Linux nuotraukose
https://www.itsvse.com/thread-9605-1-1.html

Kelių platformų vaizdų apdorojimui oficialioje "Microsoft" dokumentacijoje rekomenduojama naudoti šias bibliotekas:

  • "ImageSharp"
  • SkiaSharp
  • Microsoft.Maui.Grafika

Nuoroda:Hipersaito prisijungimas matomas.

Šiame straipsnyje naudojama "SkiaSharp" biblioteka grafiniam CAPTCHA generuoti,"SkiaSharp" yra kelių platformų 2D grafikos API, skirta .NET platformai, pagrįsta "Google" "Skia" grafikos biblioteka (skia.org).。 Ji siūlo išsamią 2D API, kurią galima naudoti mobiliuosiuose, serverių ir stalinių kompiuterių modeliuose vaizdams atvaizduoti.

Adresas:Hipersaito prisijungimas matomas.

Pirmiausia sukurkite naują "ASP.NET Core 6" projektą ir nuorodąSkiaSharpAtitinkamos bibliotekos yra šios:

Atkreipkite dėmesį, kad jei projektą reikia įdiegti Linux sistemoje, reikalingos nuorodosSkiaSharp.NativeAssets.Linuxklasė, kitaip klaida bus tokia:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Vykdant užklausą įvyko neapdorota išimtis.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: 'SkiaSharp.SKImageInfo' tipo iniciatorius išmetė išimtį.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Neįmanoma įkelti bendrai naudojamos bibliotekos "libSkiaSharp" arba vienos iš jos priklausomybių. Norėdami padėti diagnozuoti įkėlimo problemas, apsvarstykite galimybę nustatyti LD_DEBUG aplinkos kintamąjį: liblibSkiaSharp: negali atidaryti bendrai naudojamo objekto failo: nėra tokio failo ar katalogo
Apr 03 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Vidinės išimties rietuvės sekimo --- pabaiga
Apr 03 18:51:06 raspberrypi dotnet[6203]: at 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
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 eilutė
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Uždarymas , Objektas , Objektas[] )

Norėdami atsižvelgti į tai, kad kai kurių šriftų šriftų gali trūkti skirtingose sistemose, todėl neįmanoma normaliai rodyti patvirtinimo kodo informacijos, turime rankiniu būdu nukopijuoti šriftus į projektą, projekte sukurti naują šriftų aplanką ir nukopijuoti šriftus į jį, kaip parodyta paveikslėlyje žemiau:



Konfigūracija yra tokia:

Remiantis informacine medžiaga internete, bandymo metu sugeneruotas grafinis patvirtinimo kodas yra toks:



Sukurtas CAPTCHA turi du trūkumus:CAPTCHA yra juoda (lengvai atpažįstama OCR), o CAPTCHA raidės yra perkrautos be jokių tarpųNorėdami išspręsti šias dvi problemas, optimizavau kodą taip:

"HomeController" valdiklio kodas yra toks:

Galutiniai atvaizdai yra tokie:


Galiausiai pridėkite šrifto failą:

Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašomeAtsakyti


(Pabaiga)




Ankstesnis:[Posūkis]. NET 6 Nauja funkcija Enumerable.Chunk()
Kitą:"Angular" neleidžia suaktyvinti pirminio paspaudimo įvykio
 Savininkas| Publikuota: 2022-4-4 12:28:35 |
Peržiūra

ASP.NET Core (XIII), kad nustatytų, ar tai yra "Ajax" prašymas, ar ne
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvylika) priekinės dalies JS, CSS susiejimas ir glaudinimas
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) galinio taško maršrutas prideda tarpinę programinę įrangą, kad būtų rodomos visos DI paslaugos
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Išsamus konfigūracijos prioritetų paaiškinimas branduolyje [10].
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Išsamus "Core" tarpinės programinės įrangos paaiškinimas (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Išsamus "Core Middleware" paaiškinimas
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Swagger vartotojo sąsajos numatytųjų parametrų duobę Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Išsami sistemos šaltinio kodo analizė
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI rankiniu būdu gauna objektų įpurškimo būdą
https://www.itsvse.com/thread-9595-1-1.html

"ASP.NET Core" (penki) yra pagrįstas BŽŪP paskirstytais sandoriais
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filtro vieningas ModelState modelio tikrinimas
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamiškai kurkite egzempliorius naudodami "ActivatorUtilities"
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Iš naujo paleiskite programą pagal kodą
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) naudoja Redis talpyklą
https://www.itsvse.com/thread-9393-1-1.html
Paskelbta 2022-4-4 15:02:24 |
Išmokite mokytis
Paskelbta 2022-4-13 08:58:42 |
Tai gerai, man patinka. Ačiū už pasidalinimą!
Paskelbta 2022-4-14 09:46:41 |
Sužinokite apie didelio vaikino veikimą, ačiū už pasidalinimą
Publikuota: 2022-8-5 16:25:05 |
Viršininkas sunkiai dirbo
 Savininkas| Publikuota: 2024-11-25 10:33:43 |
"SixLabors.ImageSharp" taip pat yra puiki biblioteka, skirta kelių platformų vaizdų apdorojimui
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com