Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 38588|Odpoveď: 6

[.NET Core] ASP.NET Core (štrnásť) je založený na image captcha SkiaSharp

[Kopírovať odkaz]
Zverejnené 4.4.2022 o 12:25:53 | | | |
Predtým, pri vývoji ASP.NET projektov s použitím .NET Frameworku, boli všetky nasadené na Windows systémoch a nemohli byť multiplatformové, takže môžete použiť System.Drawing na generovanie kódov na overenie obrázkov, nasledovne:

asp.net MVC krásny obrázok captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementuje funkciu grafického overovacieho kódu
https://www.itsvse.com/thread-7304-1-1.html

Pri online vývoji s projektmi .NET Core je generovanie obrazových captcha potrebné odkazovať na knižnicu System.Drawing.Common, ale zatiaľBalík System.Drawing.Common NuGet je teraz zoskupený ako:WindowsKonkrétne knižnice。 Pri kompilácii pre ne-Windows operačné systémy Platform Analyzer varuje pri kompilácii. Ako je znázornené na nasledujúcom obrázku:

Táto volajúca stránka je prístupná na všetkých platformách. 'Font' je podporovaný iba na 'windows'.



Pred .NET 6 používanie balíka System.Drawing.Common negenerovalo žiadne varovania počas kompilácie a nevyhodilo žiadne výnimky za behu. Od .NET 6 Platform Analyzer vydáva varovanie pri kompilácii referenčného kódu pre operačné systémy mimo Windows. Tiež, pokiaľ nie je nastavená konfiguračná možnosť, bude vyhodená nasledujúca výnimka za behu:


System.TypeInitializationException : Typový inicializátor pre 'Gdip' vyhodil výnimku.
      ---- System.PlatformNotSupportedException : System.Drawing.Common nie je podporovaný na platformách mimo Windows. VidieťPrihlásenie na hypertextový odkaz je viditeľné.Pre viac informácií.
      Stack Trace:
           at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(názov súboru reťazca, IntPtr& bitmapa)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): na System.Drawing.Bitmap.. ctor(názov súboru reťazca, Boolean useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): na System.Drawing.Bitmap.. ctor(názov súboru reťazca)
        /_/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()

Referencia na chybu:

Problémy s vodoznakovaním .NET Core na obrázkoch Linuxu
https://www.itsvse.com/thread-9605-1-1.html

Pre multiplatformové spracovanie obrázkov oficiálna dokumentácia Microsoftu odporúča používať nasledujúce knižnice:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

Tento článok používa knižnicu SkiaSharp na generovanie grafického CAPTCHA,SkiaSharp je multiplatformové 2D grafické API pre platformu .NET založené na grafickej knižnici Google Skia (skia.org).。 Ponúka komplexné 2D API, ktoré je možné používať na mobilných, serverových aj desktopových modeloch na renderovanie obrázkov.

Adresa:Prihlásenie na hypertextový odkaz je viditeľné.

Najprv vytvorte nový projekt ASP.NET Core 6 a referenciuSkiaSharpPríslušné knižnice sú nasledovné:

Upozorňujeme, že ak je potrebné projekt nasadiť na Linux systém, sú potrebné referencieSkiaSharp.NativeAssets.Linuxtriedy, inak bude chyba nasledovná:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Pri vykonávaní požiadavky došlo k nespracovanej výnimke.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Typový inicializátor pre 'SkiaSharp.SKImageInfo' vyhodil výnimku.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Nie je možné načítať zdieľanú knižnicu 'libSkiaSharp' alebo jednu z jej závislostí. Aby ste pomohli diagnostikovať problémy s načítaním, zvážte nastavenie LD_DEBUG environmentálnej premennej: liblibSkiaSharp: cannot open shared object file: Žiadny takýto súbor ani adresár
Apr 03 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: na SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Koniec 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: \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 :riadok 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Closure , Object , Object[] )

Aby sme zohľadnili, že niektoré fonty môžu chýbať v rôznych systémoch, čo vedie k bežnému zobrazovaniu informácií o overovacích kódoch, musíme fonty manuálne skopírovať do projektu, vytvoriť nový priečinok fontov v projekte a skopírovať fonty do neho, ako je znázornené na obrázku nižšie:



Konfigurácia je nasledovná:

Podľa referenčných materiálov na internete je grafický overovací kód generovaný testom nasledovný:



Generovaná CAPTCHA má dve nevýhody:CAPTCHA je úplne čierny (ľahko rozpoznateľný OCR) a písmená CAPTCHA sú natlačené bez akýchkoľvek medzierAby som vyriešil tieto dva problémy, optimalizoval som kód nasledovne:

Kód ovládača HomeController je nasledovný:

Konečné zobrazenia sú nasledovné:


Nakoniec priložte súbor písma:

Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím.Odpoveď


(Koniec)




Predchádzajúci:[Otoč]. NET 6 New Feature Enumerable.Chunk()
Budúci:Angular zabraňuje spusteniu udalosti kliknutia rodiča
 Prenajímateľ| Zverejnené 4.4.2022 o 12:28:35 |
revízia

ASP.NET Core (XIII) na určenie, či ide o Ajax požiadavku alebo nie
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvanásť) front-end JS, CSS bundlovanie a kompresia
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) koncová trasa pridáva middleware na zobrazenie všetkých DI služieb
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Podrobné vysvetlenie priorít konfigurácie v Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Podrobné vysvetlenie middleware middleware v Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Podrobné vysvetlenie Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET z predvolených parametrov používateľského rozhrania Swagger v Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Jadro (7) Hĺbková analýza zdrojového kódu frameworku
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI manuálne získava metódu injektovania objektov
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (päť) je založený na distribuovaných transakciách podľa CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filter zjednotený validácia modelu ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Jadro (iii) Dynamicky vytvárať inštancie pomocou ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Reštartovať aplikáciu pomocou kódu
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) používa Redis caching
https://www.itsvse.com/thread-9393-1-1.html
Zverejnené 4.4.2022 o 15:02:24 |
Naučte sa učiť
Zverejnené 13. 4. 2022 08:58:42 |
Toto je dobré, páči sa mi to. Ďakujem, že si sa podelil!
Zverejnené 14.4.2022 09:46:41 |
Naučte sa, ako funguje veľký chlap, ďakujem, že ste sa podelili
Zverejnené 5.8.2022 o 16:25:05 |
Šéf tvrdo pracoval
 Prenajímateľ| Zverejnené 2024-11-25 10:33:43 |
SixLabors.ImageSharp je tiež skvelá knižnica pre multiplatformové spracovanie obrázkov
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com