Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 38588|Répondre: 6

[.NET Core] ASP.NET Core (quatorze) est basé sur le captcha d’image SkiaSharp

[Copié le lien]
Publié le 4-04-2022 à 12:25:53 | | | |
Auparavant, lors du développement de ASP.NET projets utilisant le .NET Framework, ils étaient tous déployés sur des systèmes Windows, et ils ne pouvaient pas être multiplateformes, donc vous pouvez utiliser System.Drawing pour générer des codes de vérification d’image, comme suit :

asp.net captcha d’images magnifiques MVC
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implémente une fonction de code de vérification graphique
https://www.itsvse.com/thread-7304-1-1.html

Pour développer en ligne avec des projets .NET Core, générer des captchas d’image nécessite de se référer à la bibliothèque System.Drawing.Common, mais pour l’instantLe paquet NuGet System.Drawing.Common est désormais regroupé comme suit :WindowsBibliothèques spécifiques。 Lors de la compilation pour des systèmes d’exploitation non-Windows, le Platform Analyzer avertit au moment de la compilation. Comme le montre la figure suivante :

Ce site d’appel est accessible sur toutes les plateformes. « Police » n’est prise en charge que sur « fenêtres ».



Avant .NET 6, l’utilisation du paquet System.Drawing.Common ne générait aucun avertissement au moment de la compilation et n’affichait aucune exception à l’exécution. À partir de .NET 6, l’analyseur de plateforme émet un avertissement au moment de la compilation lors de la compilation du code de référence pour les systèmes d’exploitation non-Windows. De plus, à moins que l’option de configuration ne soit activée, l’exception d’exécution suivante sera lancée :


System.TypeInitializationException : L’initialiseur de type pour 'Gdip' a lancé une exception.
      ---- System.PlatformNotSupportedException : System.Drawing.Common n’est pas pris en charge sur les plateformes non-Windows. VoirLa connexion hyperlientérée est visible.Pour plus d’informations.
      Trace de la pile :
           sur System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String filename, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0) : à System.Drawing.Bitmap.. ctor(Nom de fichier chaîne, booléen useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0) : à System.Drawing.Bitmap.. ctor(Nom de fichier chaîne)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0) : at System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0) : at System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Trace de pile intérieure -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0) : at System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0) : at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0) : sur System.Drawing.SafeNativeMethods.Gdip.. cctor()

Référence à l’erreur :

Problèmes de filigranage .NET Core sur les images Linux
https://www.itsvse.com/thread-9605-1-1.html

Pour le traitement d’image multiplateforme, la documentation officielle de Microsoft recommande d’utiliser les bibliothèques suivantes :

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Référence:La connexion hyperlientérée est visible.

Cet article utilise la bibliothèque SkiaSharp pour générer un CAPTCHA graphique,SkiaSharp est une API graphique 2D multiplateforme pour la plateforme .NET basée sur la bibliothèque graphique Skia (skia.org) de Google.。 Il propose une API 2D complète pouvant être utilisée sur mobile, serveur et bureau pour afficher des images.

Adresse:La connexion hyperlientérée est visible.

D’abord, créez un nouveau projet ASP.NET Core 6 et une référenceSkiaSharpLes bibliothèques concernées sont les suivantes :

Notez que si le projet doit être déployé sur un système Linux, des références sont requisesSkiaSharp.NativeAssets.Linuxclasse, sinon l’erreur sera la suivante :

03 avril 18:51:06 raspberrypi dotnet[6203] : faille : Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
03 avr. 18:51:06 raspberrypi dotnet[6203] : Une exception non prise en charge s’est produite lors de l’exécution de la requête.
03 avril 18:51:06 raspberrypi dotnet[6203] : System.TypeInitializationException : L’initialiseur de type pour 'SkiaSharp.SKImageInfo' a lancé une exception.
03 avril 18:51:06 raspberrypi dotnet[6203] : ---> System.DllNotFoundException : Impossible de charger la bibliothèque partagée 'libSkiaSharp' ou l’une de ses dépendances. Pour aider à diagnostiquer les problèmes de chargement, envisagez de définir la variable d’environnement LD_DEBUG : liblibSkiaSharp : cannot open shared object file : No such file or directory
03 avril 18:51:06 raspberrypi dotnet[6203] : à SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
03 avril 18:51:06 raspberrypi dotnet[6203] : sur SkiaSharp.SKImageInfo :. cctor()
03 avr. 18:51:06 raspberrypi dotnet[6203] : --- Fin de la trace de la pile d’exception intérieure ---
03 avril 18:51:06 raspberrypi dotnet[6203] : sur HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) en C : \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs :ligne 184
03 avril 18:51:06 raspberrypi dotnet[6203] : sur HomeCloud.Controllers.HomeController.Test() dans C :\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :ligne 80
03 avr. 18:51:06 raspberrypi dotnet[6203] : à lambda_method34(Clôture, Objet, Objet[] )

Pour considérer que certaines polices de caractères peuvent manquer sous différents systèmes, ce qui empêche d’afficher normalement les informations du code de vérification, il faut copier manuellement les polices dans le projet, créer un nouveau dossier de polices dans le projet, puis y copier les polices, comme montré dans la figure ci-dessous :



La configuration est la suivante :

Selon les documents de référence sur Internet, le code de vérification graphique généré par le test est le suivant :



Le CAPTCHA généré présente deux inconvénients :Le CAPTCHA est entièrement noir (facilement reconnaissable par OCR), et les lettres CAPTCHA sont regroupées sans aucun espacementPour résoudre ces deux problèmes, j’ai optimisé le code comme suit :

Le code du contrôleur HomeController est le suivant :

Les rendus finaux sont les suivants :


Enfin, joignez le fichier de police :

Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaîtRépondre


(Fin)




Précédent:[Tourne]. NET 6 Nouvelle fonctionnalité Enumerable.Chunk()
Prochain:Angular empêche le déclenchement de l’événement de clic parent
 Propriétaire| Publié le 4-04-2022 à 12:28:35 |
révision

ASP.NET Core (XIII) pour déterminer s’il s’agit d’une requête Ajax ou non
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (douze) front-end JS, regroupement CSS et compression
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET route de terminaison Core (XI) ajoute un middleware pour afficher tous les services DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explication détaillée des priorités de configuration dans Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explication détaillée du middleware Middleware de Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Explication détaillée du Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET piège des paramètres par défaut de l’interface Swagger dans Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analyse approfondie du code source du framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET DI Core (VI) obtient manuellement la méthode d’injection d’objets
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinq) est basé sur les transactions distribuées CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validation unifiée du modèle ModelState filtre Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Créer dynamiquement des instances à l’aide d’ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Redémarrer l’application par code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utilise la mise en cache Redis
https://www.itsvse.com/thread-9393-1-1.html
Publié le 4-04-2022 à 15:02:24 |
Apprendre à apprendre
Publié le 13-04-2022 08:58:42 |
C’est bon, j’aime bien. Merci d’avoir partagé !
Publié le 14-04-2022 09:46:41 |
Apprenez le fonctionnement du grand patron, merci de partager
Publié le 05-08-2022 à 16:25:05 |
Le patron a travaillé dur
 Propriétaire| Publié le 25-11-2024 à 10:33:43 |
SixLabors.ImageSharp est également une excellente bibliothèque pour le traitement d’images multiplateforme
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com