Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 38588|Antwoord: 6

[.NET Core] ASP.NET Core (veertien) is gebaseerd op de SkiaSharp-afbeelding captcha

[Link kopiëren]
Geplaatst op 4-4-2022 12:25:53 | | | |
Eerder, bij het ontwikkelen van ASP.NET projecten met het .NET Framework, werden ze allemaal op Windows-systemen geïmplementeerd en konden ze niet cross-platform zijn, dus je kunt System.Drawing gebruiken om afbeeldingsverificatiecodes te genereren, als volgt:

asp.net MVC mooie afbeelding captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementeert grafische verificatiecodefunctie
https://www.itsvse.com/thread-7304-1-1.html

Online ontwikkelen met .NET Core-projecten vereist het genereren van afbeeldingscaptcha's verwijzing naar de System.Drawing.Common-bibliotheek, maar voorlopigSystem.Drawing.Common NuGet-pakket is nu gegroepeerd als:RamenSpecifieke bibliotheken。 Bij compileren voor niet-Windows besturingssystemen waarschuwt de Platform Analyzer tijdens het compileren tijd. Zoals te zien is in de volgende figuur:

Deze belsite is op alle platforms toegankelijk. 'Lettertype' wordt alleen ondersteund op 'windows'.



Voor .NET 6 genereerde het gebruik van het System.Drawing.Common-pakket geen compile-tijdwaarschuwingen en werden er geen runtime-uitzonderingen gegooid. Vanaf .NET 6 geeft de Platform Analyzer een compileertijdwaarschuwing uit bij het compileren van referentiecode voor niet-Windows besturingssystemen. Ook, tenzij de configuratie-optie is ingesteld, zal de volgende runtime-uitzondering worden gegooid:


System.TypeInitializationException : De type-initializer voor 'Gdip' heeft een uitzondering gegooid.
      ---- System.PlatformNotSupportedException : System.Drawing.Common wordt niet ondersteund op niet-Windows-platforms. ZienDe hyperlink-login is zichtbaar.voor meer informatie.
      Stack Trace:
           op System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String-bestandsnaam, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): op System.Drawing.Bitmap.. ctor(Bestandsnaam van string, Boolean useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): bij System.Drawing.Bitmap.. ctor(Bestandsnaam van string)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): bij System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): bij System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Inner Stack Trace -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): bij System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): bij System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): bij System.Drawing.SafeNativeMethods.Gdip.. cctor()

Foutreferentie:

.NET Core-watermarkingproblemen op Linux-afbeeldingen
https://www.itsvse.com/thread-9605-1-1.html

Voor cross-platform beeldverwerking raadt de officiële documentatie van Microsoft aan om de volgende bibliotheken te gebruiken:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Referentie:De hyperlink-login is zichtbaar.

Dit artikel gebruikt de SkiaSharp-bibliotheek om grafische CAPTCHA te genereren,SkiaSharp is een cross-platform 2D-grafische API voor het .NET-platform, gebaseerd op Google's Skia grafische bibliotheek (skia.org).。 Het biedt een uitgebreide 2D-API die gebruikt kan worden op mobiele, server- en desktopmodellen om afbeeldingen te renderen.

Adres:De hyperlink-login is zichtbaar.

Maak eerst een nieuw ASP.NET Core 6-project en referentie aanSkiaSharpDe relevante bibliotheken zijn als volgt:

Let op: als het project op een Linux-systeem moet worden geïmplementeerd, zijn referenties vereistSkiaSharp.NativeAssets.Linuxklasse, anders zal de fout als volgt zijn:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Er is een niet-behandelde uitzondering opgetreden tijdens het uitvoeren van het verzoek.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: De type-initializer voor 'SkiaSharp.SKImageInfo' gaf een uitzondering.
03 april 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Gedeelde bibliotheek 'libSkiaSharp' of een van de afhankelijkheden ervan kan niet laden. Om laadproblemen te helpen diagnosticeren, overweeg de LD_DEBUG omgevingsvariabele in te stellen: libSkiaSharp: kan gedeeld objectbestand niet openen: Geen dergelijk bestand of map
03 apr 18:51:06 raspberrypi dotnet[6203]: op SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
03 apr 18:51:06 raspberrypi dotnet[6203]: bij SkiaSharp.SKImageInfo:. cctor()
03 april 18:51:06 raspberrypi dotnet[6203]: --- Einde van de inner exception stack trace ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: bij HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 breedte, Int32 hoogte, Int32 lineNum, Int32 lineStrookeWidth) in C: \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:regel 184
03 apr 18:51:06 raspberrypi dotnet[6203]: bij HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :regel 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Closure , Object , Object[] )

Om te overwegen dat sommige lettertypen onder verschillende systemen kunnen ontbreken, waardoor verificatiecode-informatie niet normaal kan worden weergegeven, moeten we de lettertypen handmatig kopiëren in het project, een nieuwe lettertypemap in het project aanmaken en de lettertypen daarin kopiëren, zoals te zien is in de onderstaande figuur:



De configuratie is als volgt:

Volgens de referentiematerialen op het internet is de grafische verificatiecode die door de test wordt gegenereerd als volgt:



De gegenereerde CAPTCHA heeft twee nadelen:De CAPTCHA is volledig zwart (gemakkelijk herkenbaar door OCR), en de CAPTCHA-letters staan dicht op elkaar gepropt zonder enige afstand.Om deze twee problemen op te lossen, heb ik de code als volgt geoptimaliseerd:

De HomeController-controllercode is als volgt:

De definitieve renderings zijn als volgt:


Voeg tenslotte het lettertypebestand bij:

Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieftAntwoord


(Einde)




Vorig:[Draai]. NET 6 Nieuwe Functie Enumerable.Chunk()
Volgend:Angular voorkomt het triggeren van het ouderklik-event
 Huisbaas| Geplaatst op 4-4-2022 12:28:35 |
recensie

ASP.NET Core (XIII) om te bepalen of het een Ajax-verzoek is of niet
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (twaalf) front-end JS, CSS-bundling en compressie
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) eindpuntroute voegt middleware toe om alle DI-diensten weer te geven
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Gedetailleerde uitleg van configuratieprioriteiten in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Gedetailleerde uitleg van de middleware middleware van Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Gedetailleerde uitleg van Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET put van de standaardparameters van de Swagger UI in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Kern (7) Diepgaande analyse van de broncode van het framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI verkrijgt handmatig de methode om objecten te injecteren
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (vijf) is gebaseerd op CAP-gedistribueerde transacties
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-filter uniforme ModelState-modelvalidatie
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Maakt dynamisch instanties aan met behulp van ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Herstart de applicatie via code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) gebruikt Redis-caching
https://www.itsvse.com/thread-9393-1-1.html
Geplaatst op 4-4-2022 15:02:24 |
Leer leren
Geplaatst op 13-4-2022 08:58:42 |
Dit is goed, ik vind het leuk. Bedankt voor het delen!
Geplaatst op 14-4-2022 09:46:41 |
Leer de werking van de grote jongen kennen, bedankt voor het delen
Geplaatst op 2022-8-5 16:25:05 |
De baas heeft hard gewerkt
 Huisbaas| Geplaatst op 25-11-2024 10:33:43 |
SixLabors.ImageSharp is ook een geweldige bibliotheek voor cross-platform beeldverwerking
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com