Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 38588|Válasz: 6

[.NET mag] ASP.NET Core (tizennégy) a SkiaSharp kép captcha-ján alapul

[Linket másol]
Közzétéve: 2022-4-4 12:25:53 | | | |
Korábban, amikor ASP.NET projekteket fejlesztettek .NET keretrendszerrel, mind Windows rendszereken telepítettek, és nem lehettek többplatformosak, így a System.Drawing segítségével képellenőrző kódokat generálhatsz, az alábbiak szerint:

asp.net mvc gyönyörű kép captcha
https://www.itsvse.com/thread-4911-1-1.html

A WebAPI grafikus ellenőrző kódfunkciót valósít meg
https://www.itsvse.com/thread-7304-1-1.html

Az online fejlesztéshez .NET Core projektekkel, a kép captcha-k generálásához a System.Drawing.Common könyvtárra való hivatkozást igényel, de egyelőreA System.Drawing.Common NuGet csomag most a következőképpen csoportosítható:WindowsSpecifikus könyvtárak。 Nem Windows operációs rendszerekre való fordításkor a Platform Analyzer figyelmeztet a fordítás idején. Ahogy az alábbi ábrán látható:

Ez a hívóoldal minden platformon elérhető. A 'betűtípus' csak 'ablakok' esetén támogatott.



A .NET 6 előtt a System.Drawing.Common csomag használata nem generált fordítási idejű figyelmeztetéseket, és nem adott futtatóidejű kivételeket. A .NET 6-tól kezdve a Platform Analyzer fordítási időben figyelmeztetést ad ki a nem Windows operációs rendszerek referenciakódjának fordításakor. Továbbá, hacsak a konfigurációs opció be nem állítva, a következő futási kivétel kerül elő:


System.TypeInitializationException : A 'Gdip' típus inicializálója kivételt dobott.
      ---- System.PlatformNotSupportedException : System.Drawing.Common nem támogatott nem Windows platformokon. LátA hiperlink bejelentkezés látható.További információért.
      Stack Trace:
           a System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String fájlnév, IntPtr&bitmap) címen
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): a System.Drawing.Bitmap.. ctor(String fájlnév, Boolean useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): a System.Drawing.Bitmap.. ctor(String fájlnév)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): a System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ címen MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): a System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext() címen
        ----- Belső Stack Trace -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): a System.Drawing.LibraryResolver.EnsureRegistered() címen
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): a System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize() címen
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): a System.Drawing.SafeNativeMethods.Gdip.. cctor()

Hibahivatkozás:

.NET Core vízjelezési problémák Linux képeken
https://www.itsvse.com/thread-9605-1-1.html

A Microsoft hivatalos dokumentációja a többplatformos képfeldolgozáshoz a következő könyvtárak használatát javasolja:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Utalás:A hiperlink bejelentkezés látható.

Ez a cikk a SkiaSharp könyvtárat használja grafikus CAPTCHA generálásához,A SkiaSharp egy cross-platformos 2D grafikus API a .NET platformhoz, amely a Google Skia grafikai könyvtárán (skia.org) alapul.。 Átfogó 2D API-t kínál, amely mobil, szerver és asztali modelleken is használható képek megjelenítésére.

Cím:A hiperlink bejelentkezés látható.

Először is, hozz létre egy új ASP.NET Core 6 projektet és hivatkozástSkiaSharpAz érintett könyvtárak a következők:

Fontos megjegyezni, hogy ha a projektet Linux rendszerre kell telepíteni, hivatkozásokra van szükségSkiaSharp.NativeAssets.Linuxosztály, különben a hiba a következő lesz:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: A kérés végrehajtása közben kezeletlen kivétel történt.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: A 'SkiaSharp.SKImageInfo' típus-inicializátora kivételt dobott.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Nem lehet betölteni a 'libSkiaSharp' megosztott könyvtárat vagy valamelyik függőjét. A betöltési problémák diagnosztizálásához fontold meg a LD_DEBUG környezeti változót: liblibSkiaSharp: cannot open shared object file: No such file or directory
Apr 03 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: a SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- A belső exception stack trace vége ---
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]: a HomeCloud.Controllers.HomeController.Test() címen C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :80-as vonal
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Zárás, Tárgy, Tárgy[] )

Ahhoz, hogy figyelembe vegyük, hogy egyes betűtípusok hiányozhatnak különböző rendszerekben, ami miatt nem lehet normál módon megjeleníteni az ellenőrző kód információkat, kézzel kell átmásolnunk a betűtípusokat a projektbe, létrehozni egy új betűtípusok mappát a projektben, és bemásolni a betűtípusokat, ahogy az alábbi ábrán látható:



A konfiguráció a következő:

Az interneten található referenciaanyagok szerint a teszt által generált grafikus ellenőrző kód a következő:



A generált CAPTCHA-nak két hátránya van:A CAPTCHA teljesen fekete (az OCR könnyen felismeri), és a CAPTCHA betűk egymáshoz tömörülnek, szóköz nélkülE két probléma megoldásához a kódot a következőképpen optimalizáltam:

A HomeController vezérlőkód a következő:

A végső képek a következők:


Végül csatold hozzá a betűtípus fájlt:

Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlekVálasz


(Vége)




Előző:[Fordulás]. NET 6 Új funkció: Enumerable.Chunk()
Következő:Az Angular megakadályozza a parent click esemény aktiválását
 Háziúr| Közzétéve: 2022-4-4 12:28:35 |
szemle

ASP.NET Core (XIII) hogy megállapítsam, Ajax kérés-e vagy sem
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (tizenkettő) front-end JS, CSS csomagolás és tömörítés
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) végállomás közlekedőt ad hozzá az összes DI szolgáltatás megjelenítéséhez
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Részletes magyarázata a konfigurációs prioritásokról a Core(10)-ben.
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Részletes magyarázata a Core (9) közmű middleware-jéről.
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Részletes magyarázat a Core Middleware-ről
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET a Swagger UI alapértelmezett paramétereinek gödöre a Core(8)-ban.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) A keretrendszer forráskódjának mélyreható elemzése
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI manuálisan megszerzi az objektumok befecskendezésének módszerét
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (öt) CAP elosztott tranzakciókon alapul
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) szűrő egységes ModelState modellvalidáció
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamikusan hozz létre példányokat az ActivatorUtilities használatával
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Újraindítsa az alkalmazást kód szerint
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) Redis gyorsítótárat használ
https://www.itsvse.com/thread-9393-1-1.html
Közzétéve: 2022-4-4 15:02:24 |
Tanulj meg
Közzétéve: 2022-4-13 08:58:42 |
Ez jó, tetszik. Köszönöm, hogy megosztottad!
Közzétéve: 2022-4-14 09:46:41 |
Tanuld meg a nagyfiú működését, köszönöm, hogy megosztottad
Közzétéve: 2022-8-5 16:25:05 |
A főnök keményen dolgozott
 Háziúr| Közzétéve: 2024-11-25, 10:33:43 |
A SixLabors.ImageSharp szintén kiváló könyvtár a többplatformos képfeldolgozáshoz
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com