Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 38588|Odpověď: 6

[.NET Core] ASP.NET Core (čtrnáct) je založen na image captcha ze SkiaSharp

[Kopírovat odkaz]
Zveřejněno 4. 4. 2022 12:25:53 | | | |
Dříve, při vývoji ASP.NET projektů s využitím .NET Frameworku, byly všechny nasazeny na systémech Windows a nemohly být multiplatformní, takže můžete použít System.Drawing k generování kódů pro ověřování obrázků, a to následovně:

asp.net MVC krásný obrázek captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementuje grafickou ověřovací kódovou funkci
https://www.itsvse.com/thread-7304-1-1.html

Při online vývoji s projekty .NET Core je generování obrazových captcha potřeba odkazovat na knihovnu System.Drawing.Common, ale zatímBalíček System.Drawing.Common NuGet je nyní seskupen jako:WindowsSpecifické knihovny。 Při kompilaci pro operační systémy mimo Windows Platform Analyzer varuje při kompilaci. Jak je znázorněno na následujícím obrázku:

Tato stránka pro volání je přístupná na všech platformách. 'Font' je podporován pouze na 'Windows'.



Před .NET 6 nebylo používání balíčku System.Drawing.Common generováno žádné varování při kompilaci a nezobrazovalo žádné výjimky za běhu. Od .NET 6 vydává Platform Analyzer varování při kompilaci referenčního kódu pro operační systémy mimo Windows. Také, pokud není nastavena konfigurační volba, bude vyhozena následující výjimka za běhu:


System.TypeInitializationException : Typový inicializátor pro 'Gdip' vyhodil výjimku.
      ---- System.PlatformNotSupportedException : System.Drawing.Common není podporován na platformách mimo Windows. VidětPřihlášení k hypertextovému odkazu je viditelné.pro více informací.
      Stack Trace:
           na System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Název souboru řetězce, IntPtr& bitmapa)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): na System.Drawing.Bitmap.. ctor(název souboru řetězce, Boolean useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): na System.Drawing.Bitmap.. ctor(název souboru řetězce)
        /_/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()
        ----- Vnitřní stopa -----
        /_/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()

Odkaz na chybu:

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

Pro zpracování obrazu napříč platformami doporučuje oficiální dokumentace Microsoftu používat následující knihovny:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Odkaz:Přihlášení k hypertextovému odkazu je viditelné.

Tento článek využívá knihovnu SkiaSharp k generování grafického CAPTCHA,SkiaSharp je multiplatformní 2D grafické API pro platformu .NET založené na grafické knihovně Google Skia (skia.org).。 Nabízí komplexní 2D API, které lze používat napříč mobilními, serverovými i desktopovými modely pro vykreslování obrázků.

Adresa:Přihlášení k hypertextovému odkazu je viditelné.

Nejprve vytvořte nový projekt ASP.NET Core 6 a odkazSkiaSharpPříslušné knihovny jsou následující:

Všimněte si, že pokud je potřeba projekt nasadit na linuxový systém, jsou vyžadovány referenceSkiaSharp.NativeAssets.Linuxtřídy, jinak bude chyba následující:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
3. dubna 18:51:06 raspberrypi dotnet[6203]: Při vykonávání požadavku došlo k nezpracované výjimě.
Dubna 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Typový inicializátor pro 'SkiaSharp.SKImageInfo' vyhodil výjimku.
3. dubna 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Nelze načíst sdílenou knihovnu 'libSkiaSharp' ani jednu z jejích závislostí. Pro lepší diagnostiku problémů s načítáním zvažte nastavení proměnné LD_DEBUG prostředí: liblibSkiaSharp: nelze otevřít soubor sdíleného objektu: Žádný takový soubor ani adresář
3. dubna 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
3. dubna 18:51:06 raspberrypi dotnet[6203]: na SkiaSharp.SKImageInfo:. cctor()
Dubna 03 18:51:06 raspberrypi dotnet[6203]: --- Konec 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
3. dubna 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :line 80
Dubna 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Closure , objekt , objekt[] )

Abychom mohli zohlednit, že některá fonta mohou chybět v různých systémech, což vede k normálnímu zobrazení informací o ověřovacích kódech, musíme fonty ručně zkopírovat do projektu, vytvořit novou složku fontů v projektu a zkopírovat do ní fonty, jak je znázorněno na obrázku níže:



Konfigurace je následující:

Podle referenčních materiálů na internetu je grafický ověřovací kód generovaný testem následující:



Generovaná CAPTCHA má dvě nevýhody:CAPTCHA je celá černá (snadno rozpoznatelná OCR) a písmena CAPTCHA jsou natěsnaná dohromady bez jakéhokoliv mezerAbych tyto dva problémy vyřešil, optimalizoval jsem kód následovně:

Kód ovladače HomeController je následující:

Konečné ztvárnění jsou následující:


Nakonec přiložte soubor písma:

Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosímOdpověď


(Konec)




Předchozí:[Otoč]. NET 6 New Feature Enumerable.Chunk()
Další:Angular zabraňuje spuštění události kliknutí rodiče
 Pronajímatel| Zveřejněno 4. 4. 2022 12:28:35 |
přezkoumání

ASP.NET Core (XIII), abyste zjistili, zda jde o požadavek Ajaxu nebo ne
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Jádro (dvanáct) front-end JS, CSS balíčkování a komprese
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) koncová trasa přidává middleware pro zobrazení všech DI služeb
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Podrobné vysvětlení priorit konfigurace v Core(10).
https://www.itsvse.com/thread-10265-1-1.html

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

ASP.NET Podrobné vysvětlení jádrového middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET propasti výchozích parametrů Swagger UI v Core(8).
https://www.itsvse.com/thread-9640-1-1.html

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

ASP.NET Core (VI) DI ručně získává metodu vstřikování objektů
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (pět) je založen na distribuovaných transakcích podle CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtr Core(4) sjednocený validace modelů ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Jádro (iii) Dynamicky vytvářet instance pomocí ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Jádro (2) Restartovat aplikaci pomocí kódu
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) používá Redis caching
https://www.itsvse.com/thread-9393-1-1.html
Zveřejněno 4. 4. 2022 15:02:24 |
Učte se učit
Zveřejněno 13. 4. 2022 08:58:42 |
To je dobré, líbí se mi to. Díky za sdílení!
Zveřejněno 14. 4. 2022 09:46:41 |
Nauč se, jak funguje velký chlap, děkuji za sdílení
Zveřejněno 5. 8. 2022 16:25:05 |
Šéf tvrdě pracoval
 Pronajímatel| Zveřejněno 25. 11. 2024 10:33:43 |
SixLabors.ImageSharp je také skvělá knihovna pro multiplatformní zpracování obrázků
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com