Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 38588|Antwort: 6

[.NET Core] ASP.NET Core (vierzehn) basiert auf dem SkiaSharp-Bild-Captcha

[Link kopieren]
Veröffentlicht am 04.04.2022, 12:25:53 | | | |
Früher wurden ASP.NET Projekte mit dem .NET Framework alle auf Windows-Systemen bereitgestellt und konnten plattformübergreifend sein, sodass Sie System.Drawing verwenden können, um Bildverifizierungscodes wie folgt zu generieren:

asp.net MVC schönes Bild captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementiert die grafische Verifikationscode-Funktion
https://www.itsvse.com/thread-7304-1-1.html

Für die Online-Entwicklung mit .NET Core-Projekten erfordert die Erstellung von Bildcaptchas einen Bezug auf die System.Drawing.Common-Bibliothek, aber vorerstDas System.Drawing.Common NuGet-Paket ist nun wie folgt gruppiert:FensterSpezifische Bibliotheken。 Beim Kompilieren für Nicht-Windows-Betriebssysteme warnt der Platform Analyzer zur Kompilierungszeit. Wie in der folgenden Abbildung dargestellt:

Diese Anrufseite ist auf allen Plattformen zugänglich. 'Font' wird nur unter 'Windows' unterstützt.



Vor .NET 6 erzeugte das System.Drawing.Common-Paket keine Compile-Time-Warnungen und keine Laufzeit-Ausnahmen. Ab .NET 6 gibt der Platform Analyzer beim Kompilieren von Referenzcode für Nicht-Windows-Betriebssysteme eine Kompilierungszeitwarnung aus. Außerdem wird, sofern die Konfigurationsoption nicht gesetzt ist, folgende Laufzeit-Ausnahme ausgelöst:


System.TypeInitializationException : Der Typinitialisierer für 'Gdip' hat eine Ausnahme ausgelöst.
      ---- System.PlatformNotSupportedException : System.Drawing.Common wird auf Nicht-Windows-Plattformen nicht unterstützt. SieheDer Hyperlink-Login ist sichtbar.Für weitere Informationen.
      Stapelüberwachung:
           bei System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String-Dateiname, IntPtr& Bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): bei System.Drawing.Bitmap.. ctor (String-Dateiname, boolesche useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): unter System.Drawing.Bitmap.. ctor(String-Dateiname)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): bei System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): bei System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- innere Stapel-Spur -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): unter System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): bei System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): bei System.Drawing.SafeNativeMethods.Gdip.. cctor()

Fehlerreferenz:

.NET Core-Wassermarkierungsprobleme bei Linux-Bildern
https://www.itsvse.com/thread-9605-1-1.html

Für plattformübergreifende Bildverarbeitung empfiehlt Microsofts offizielle Dokumentation die Verwendung folgender Bibliotheken:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Referenz:Der Hyperlink-Login ist sichtbar.

Dieser Artikel verwendet die SkiaSharp-Bibliothek, um grafisches CAPTCHA zu generieren,SkiaSharp ist eine plattformübergreifende 2D-Grafik-API für die .NET-Plattform, die auf Googles Skia-Grafikbibliothek (skia.org) basiert.。 Es bietet eine umfassende 2D-API, die über mobile, Server- und Desktop-Modelle hinweg verwendet werden kann, um Bilder zu rendern.

Adresse:Der Hyperlink-Login ist sichtbar.

Erstens: Erstelle ein neues ASP.NET Core 6-Projekt und eine Referenz.SkiaSharpDie entsprechenden Bibliotheken sind wie folgt:

Beachten Sie, dass Referenzen erforderlich sind, wenn das Projekt auf einem Linux-System bereitgestellt werden muss.SkiaSharp.NativeAssets.LinuxKlasse, ansonsten lautet der Fehler wie folgt:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
03. Apr 18:51:06 raspberrypi dotnet[6203]: Während der Ausführung der Anfrage ist eine unbehandelte Ausnahme aufgetreten.
03. April 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Der Typinitialisierer für 'SkiaSharp.SKImageInfo' hat eine Ausnahme ausgelöst.
03. April 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Kann die gemeinsame Bibliothek 'libSkiaSharp' oder eine ihrer Abhängigkeiten nicht geladen werden. Um Ladeprobleme zu diagnostizieren, sollten Sie die LD_DEBUG Umgebungsvariable setzen: libSkiaSharp: cannot open shared object file: No such file of directory
03. April 18:51:06 raspberrypi dotnet[6203]: bei SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
03. Apr 18:51:06 raspberrypi dotnet[6203]: bei SkiaSharp.SKImageInfo:. cctor()
03. April 18:51:06 raspberrypi dotnet[6203]: --- Ende des inneren Ausnahmestack-Traces ---
03. Apr 18:51:06 raspberrypi dotnet[6203]: bei HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) in C: \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:Zeile 184
03. Apr 18:51:06 raspberrypi dotnet[6203]: bei HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :Zeile 80
03. April 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Closure , Object , Object[])

Um zu berücksichtigen, dass einige Schriftarten unter verschiedenen Systemen fehlen könnten, was dazu führt, dass Verifikationscode-Informationen nicht normal angezeigt werden können, müssen wir die Schriftarten manuell in das Projekt kopieren, einen neuen Schriftenordner im Projekt anlegen und die Schriftarten hineinkopieren, wie in der Abbildung unten gezeigt:



Die Konfiguration ist wie folgt:

Laut den Referenzmaterialien im Internet lautet der durch den Test generierte grafische Verifizierungscode wie folgt:



Das generierte CAPTCHA hat zwei Nachteile:Der CAPTCHA ist komplett schwarz (leicht von OCR erkennbar), und die CAPTCHA-Buchstaben sind ohne Abstand zusammengedrängtUm diese beiden Probleme zu lösen, habe ich den Code wie folgt optimiert:

Der HomeController-Controller-Code ist wie folgt:

Die endgültigen Darstellungen sind wie folgt:


Fügen Sie schließlich die Schriftdatei an:

Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitteAntwort


(Ende)




Vorhergehend:[Dreh dich]. NET 6 Neue Funktion Enumerable.Chunk()
Nächster:Angular verhindert das Auslösen des übergeordneten Klickereignisses
 Vermieter| Veröffentlicht am 4.4.2022, 12:28:35 |
Rezension

ASP.NET Core (XIII), um festzustellen, ob es sich um eine Ajax-Anfrage handelt oder nicht
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (zwölf) Frontend-JS, CSS-Bündelung und Kompression
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) Endpunkt-Route fügt Middleware hinzu, um alle DI-Dienste anzuzeigen
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaillierte Erklärung der Konfigurationsprioritäten in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaillierte Erklärung der Middleware-Middleware von Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Detaillierte Erklärung der Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Grube der Standardparameter der Swagger-Benutzeroberfläche in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Tiefgehende Analyse des Framework-Quellcodes
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI erhält manuell die Methode zum Einschleusen von Objekten
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fünf) basiert auf CAP-verteilten Transaktionen
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-Filter einheitliche ModelState-Modellvalidierung
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Erstellen Sie Instanzen dynamisch mit ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Die Anwendung per Code neu starten
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) verwendet Redis-Caching
https://www.itsvse.com/thread-9393-1-1.html
Veröffentlicht am 4.4.2022, 15:02:24 |
Lernen lernen
Veröffentlicht am 13.04.2022, 08:58:42 |
Das ist gut, ich mag es. Danke fürs Teilen!
Veröffentlicht am 14.04.2022, 09:46:41 |
Lerne die Bedienung des großen Kerls kennen, danke fürs Teilen.
Veröffentlicht am 5.8.2022, 16:25:05 |
Der Chef hat hart gearbeitet
 Vermieter| Veröffentlicht am 25.11.2024, 10:33:43 |
SixLabors.ImageSharp ist außerdem eine großartige Bibliothek für plattformübergreifende Bildverarbeitung
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com