Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 38588|Απάντηση: 6

[.NET Πυρήνας] Το ASP.NET Core (δεκατέσσερα) βασίζεται στο captcha εικόνας SkiaSharp

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2022-4-4 12:25:53 | | | |
Προηγουμένως, κατά την ανάπτυξη έργων ASP.NET χρησιμοποιώντας το .NET Framework, όλα αναπτύσσονταν σε συστήματα Windows και δεν μπορούσαν να είναι cross-platform, επομένως μπορείτε να χρησιμοποιήσετε το System.Drawing για να δημιουργήσετε κωδικούς επαλήθευσης εικόνας, ως εξής:

asp.net mvc όμορφη εικόνα captcha
https://www.itsvse.com/thread-4911-1-1.html

Το WebAPI υλοποιεί τη λειτουργία γραφικού κώδικα επαλήθευσης
https://www.itsvse.com/thread-7304-1-1.html

Η ανάπτυξη online με έργα .NET Core, η δημιουργία captcha εικόνων απαιτεί αναφορά στη βιβλιοθήκη System.Drawing.Common, αλλά προς το παρόνΤο πακέτο System.Drawing.Common NuGet ομαδοποιείται πλέον ως:παράθυραΕιδικές βιβλιοθήκες。 Κατά τη μεταγλώττιση για λειτουργικά συστήματα που δεν είναι Windows, το Platform Analyzer προειδοποιεί κατά τη μεταγλώττιση. Όπως φαίνεται στο παρακάτω σχήμα:

Αυτός ο ιστότοπος κλήσεων είναι προσβάσιμος σε όλες τις πλατφόρμες. Η «Γραμματοσειρά» υποστηρίζεται μόνο στα «παράθυρα».



Πριν από το .NET 6, η χρήση του πακέτου System.Drawing.Common δεν δημιουργούσε προειδοποιήσεις χρόνου μεταγλώττισης και δεν δημιουργούσε εξαιρέσεις χρόνου εκτέλεσης. Ξεκινώντας με το .NET 6, το Platform Analyzer εκδίδει μια προειδοποίηση χρόνου μεταγλώττισης κατά τη μεταγλώττιση κώδικα αναφοράς για λειτουργικά συστήματα που δεν είναι Windows. Επίσης, εκτός εάν έχει οριστεί η επιλογή διαμόρφωσης, θα εμφανιστεί η ακόλουθη εξαίρεση χρόνου εκτέλεσης:


System.TypeInitializationException : Ο αρχικοποιητής τύπου για το 'Gdip' έριξε μια εξαίρεση.
      ---- System.PlatformNotSupportedException : Το System.Drawing.Common δεν υποστηρίζεται σε πλατφόρμες που δεν είναι Windows. ΒλέπωΗ σύνδεση με υπερσύνδεσμο είναι ορατή.για περισσότερες πληροφορίες.
      Ίχνος στοίβας:
           στο System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Όνομα αρχείου συμβολοσειράς, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): στο System.Drawing.Bitmap.. ctor(Όνομα αρχείου συμβολοσειράς, δυαδική χρήσηIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): στο System.Drawing.Bitmap.. ctor(Όνομα αρχείου συμβολοσειράς)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): στο System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ ΜετακίνησηΕπόμενο()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): στο System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Ανίχνευση εσωτερικής στοίβας -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): στο System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): στο System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): στο System.Drawing.SafeNativeMethods.Gdip.. cctor()

Αναφορά σφάλματος:

Ζητήματα υδατογράφησης .NET Core σε εικόνες Linux
https://www.itsvse.com/thread-9605-1-1.html

Για επεξεργασία εικόνας μεταξύ πλατφορμών, η επίσημη τεκμηρίωση της Microsoft συνιστά τη χρήση των ακόλουθων βιβλιοθηκών:

  • ΕικόναSharp
  • ΣκιάΣαρπ
  • Microsoft.Maui.Γραφικά

Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Αυτό το άρθρο χρησιμοποιεί τη βιβλιοθήκη SkiaSharp για τη δημιουργία γραφικών CAPTCHA,Το SkiaSharp είναι ένα API γραφικών 2D πολλαπλών πλατφορμών για την πλατφόρμα .NET που βασίζεται στη βιβλιοθήκη γραφικών Skia της Google (skia.org).。 Προσφέρει ένα ολοκληρωμένο 2D API που μπορεί να χρησιμοποιηθεί σε μοντέλα κινητών, διακομιστών και επιτραπέζιων υπολογιστών για την απόδοση εικόνων.

Διεύθυνση:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Αρχικά, δημιουργήστε ένα νέο έργο ASP.NET Core 6 και αναφοράΣκιάΣαρπΟι σχετικές βιβλιοθήκες είναι οι εξής:

Σημειώστε ότι εάν το έργο πρέπει να αναπτυχθεί σε σύστημα Linux, απαιτούνται αναφορέςSkiaSharp.NativeAssets.Linuxτάξη, διαφορετικά το σφάλμα θα είναι το εξής:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Παρουσιάστηκε μια ανεπίλυτη εξαίρεση κατά την εκτέλεση του αιτήματος.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Ο αρχικοποιητής τύπου για το 'SkiaSharp.SKImageInfo' έριξε μια εξαίρεση.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Δεν είναι δυνατή η φόρτωση της κοινόχρηστης βιβλιοθήκης 'libSkiaSharp' ή μιας από τις εξαρτήσεις της. Για να βοηθήσετε στη διάγνωση προβλημάτων φόρτωσης, εξετάστε το ενδεχόμενο να ορίσετε τη μεταβλητή περιβάλλοντος LD_DEBUG: liblibSkiaSharp: δεν είναι δυνατό το άνοιγμα κοινόχρηστου αρχείου αντικειμένου: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
Apr 03 18:51:06 raspberrypi dotnet[6203]: στις SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: στο SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Τέλος του ίχνους στοίβας εσωτερικής εξαίρεσης ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: στο HomeCloud.ImageCaptcha.GetCaptcha(Συμβολοσειρά captchaText, Int32 πλάτος, Int32 ύψος, Int32 lineNum, Int32 lineStrookeWidth) στο C: \Χρήστες\itsvse_pc\πηγή\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:γραμμή 184
Apr 03 18:51:06 raspberrypi dotnet[6203]: στο HomeCloud.Controllers.HomeController.Test() στο C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :γραμμή 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: στις lambda_method34(Κλείσιμο , Αντικείμενο , Αντικείμενο[] )

Για να θεωρήσουμε ότι ορισμένες γραμματοσειρές ενδέχεται να λείπουν σε διαφορετικά συστήματα, με αποτέλεσμα την αδυναμία κανονικής εμφάνισης πληροφοριών κωδικού επαλήθευσης, πρέπει να αντιγράψουμε με μη αυτόματο τρόπο τις γραμματοσειρές στο έργο, να δημιουργήσουμε έναν νέο φάκελο γραμματοσειρών στο έργο και να αντιγράψουμε τις γραμματοσειρές σε αυτόν, όπως φαίνεται στο παρακάτω σχήμα:



Η διαμόρφωση έχει ως εξής:

Σύμφωνα με τα υλικά αναφοράς στο Διαδίκτυο, ο γραφικός κωδικός επαλήθευσης που δημιουργείται από τη δοκιμή είναι ο εξής:



Το CAPTCHA που δημιουργείται έχει δύο μειονεκτήματα:Το CAPTCHA είναι όλο μαύρο (αναγνωρίζεται εύκολα από το OCR) και τα γράμματα CAPTCHA είναι συνωστισμένα μεταξύ τους χωρίς κανένα κενόΓια να λύσω αυτά τα δύο προβλήματα, βελτιστοποίησα τον κώδικα ως εξής:

Ο κωδικός του χειριστηρίου HomeController είναι ο εξής:

Οι τελικές απεικονίσεις είναι οι εξής:


Τέλος, επισυνάψτε το αρχείο γραμματοσειράς:

Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώΑπάντηση


(Τέλος)




Προηγούμενος:[Στροφή]. NET 6 Νέα δυνατότητα Enumerable.Chunk()
Επόμενος:Το Angular αποτρέπει την ενεργοποίηση του συμβάντος γονικού κλικ
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2022-4-4 12:28:35 |
αναθεώρηση

ASP.NET Core (XIII) για να προσδιορίσετε εάν πρόκειται για αίτημα Ajax ή όχι
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (δώδεκα) front-end JS, ομαδοποίηση CSS και συμπίεση
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET δρομολόγηση τελικού σημείου Core (XI) προσθέτει ενδιάμεσο λογισμικό για την εμφάνιση όλων των υπηρεσιών DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Λεπτομερής επεξήγηση των προτεραιοτήτων διαμόρφωσης στο Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Λεπτομερής επεξήγηση του ενδιάμεσου λογισμικού Middleware του Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Λεπτομερής επεξήγηση του Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET λάκκο των προεπιλεγμένων παραμέτρων του Swagger UI στο Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Πυρήνας (7) Σε βάθος ανάλυση του πηγαίου κώδικα πλαισίου
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Πυρήνας (VI) Το DI λαμβάνει χειροκίνητα τη μέθοδο έγχυσης αντικειμένων
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Ο πυρήνας (πέντε) βασίζεται σε κατανεμημένες συναλλαγές της ΚΓΠ
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Επικύρωση ενοποιημένου μοντέλου ModelState φίλτρου Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Πυρήνας (iii) Δημιουργήστε δυναμικά παρουσίες χρησιμοποιώντας το ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Πυρήνας (2) Επανεκκινήστε την εφαρμογή με κωδικό
https://www.itsvse.com/thread-9480-1-1.html

Το ASP.NET Core (1) χρησιμοποιεί προσωρινή αποθήκευση Redis
https://www.itsvse.com/thread-9393-1-1.html
Δημοσιεύτηκε στις 2022-4-4 15:02:24 |
Μαθαίνω να μαθαίνω
Δημοσιεύτηκε στις 2022-4-13 08:58:42 |
Αυτό είναι καλό, μου αρέσει. Ευχαριστώ που το μοιράστηκες!
Δημοσιεύτηκε στις 2022-4-14 09:46:41 |
Μάθετε τη λειτουργία του μεγάλου άντρα, σας ευχαριστώ που το μοιραστήκατε
Δημοσιεύτηκε στις 2022-8-5 16:25:05 |
Το αφεντικό έχει δουλέψει σκληρά
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2024-11-25 10:33:43 |
Το SixLabors.ImageSharp είναι επίσης μια εξαιρετική βιβλιοθήκη για επεξεργασία εικόνας πολλαπλών πλατφορμών
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com