Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 38588|Vastaus: 6

[.NET Core] ASP.NET Core (neljätoista) perustuu SkiaSharp-kuva-captchaan

[Kopioi linkki]
Julkaistu 2022-4-4 klo 12:25:53 | | | |
Aiemmin, kun kehitettiin ASP.NET projekteja .NET Frameworkilla, ne kaikki otettiin käyttöön Windows-järjestelmissä, eikä niitä voitu käyttää monialustaisesti, joten System.Drawingia voi käyttää kuvantarkistuskoodien luomiseen seuraavasti:

asp.net mvc kaunis kuva captcha
https://www.itsvse.com/thread-4911-1-1.html

WebAPI toteuttaa graafisen varmennuskooditoiminnon
https://www.itsvse.com/thread-7304-1-1.html

Verkkokehittäminen .NET Core -projekteilla ja kuvien captcha-generointi vaatii viittausta System.Drawing.Common-kirjastoon, mutta toistaiseksiSystem.Drawing.Common NuGet-paketti on nyt ryhmitelty seuraavasti:WindowsErityiset kirjastot。 Kun käännetään ei-Windows-käyttöjärjestelmille, Platform Analyzer varoittaa käännösvaiheessa. Kuten seuraavassa kuvassa näkyy:

Tämä puhelusivusto on käytettävissä kaikilla alustoilla. 'Fontti' on tuettu vain 'ikkunoissa'.



Ennen .NET 6:ta System.Drawing.Common -paketin käyttö ei tuottanut käännösaikavaroituksia eikä ajonaikaisia poikkeuksia. .NET 6:sta alkaen Platform Analyzer antaa käännösaikavaroituksen, kun viitekoodia käännetään ei-Windows-käyttöjärjestelmille. Lisäksi, ellei konfiguraatiovaihtoehtoa ole asetettu, seuraava ajonaikainen poikkeus otetaan käyttöön:


System.TypeInitializationException : 'Gdip'-tyypin alustaja heitti poikkeuksen.
      ---- System.PlatformNotSupportedException : System.Drawing.Common ei ole tuettu ei-Windows-alustoilla. NähdäHyperlinkin kirjautuminen on näkyvissä.Lisätietoja varten.
      Pinon jäljitys:
           osoitteessa System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Merkkijonon tiedostonimi, IntPtr&bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): osoitteessa System.Drawing.Bitmap.. ctor(Merkkijonon tiedostonimi, Boolen useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): osoitteessa System.Drawing.Bitmap.. ctor(Merkkijonon tiedostonimi)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): osoitteessa System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): osoitteessa System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Sisäpinon jäljitys -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): osoitteessa System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): osoitteessa System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): osoitteessa System.Drawing.SafeNativeMethods.Gdip.. cctor()

Virheviittaus:

.NET Core -vesileimausongelmat Linux-kuvissa
https://www.itsvse.com/thread-9605-1-1.html

Monialustaiseen kuvankäsittelyyn Microsoftin virallinen dokumentaatio suosittelee seuraavien kirjastojen käyttöä:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Viittaus:Hyperlinkin kirjautuminen on näkyvissä.

Tämä artikkeli käyttää SkiaSharp-kirjastoa graafisen CAPTCHA:n tuottamiseen,SkiaSharp on monialustainen 2D-grafiikka-API .NET-alustalle, joka perustuu Googlen Skia-grafiikkakirjastoon (skia.org).。 Se tarjoaa kattavan 2D-rajapinnan, jota voidaan käyttää mobiili-, palvelin- ja työpöytämalleissa kuvien renderöintiin.

Osoite:Hyperlinkin kirjautuminen on näkyvissä.

Ensiksi luo uusi ASP.NET Core 6 -projekti ja viiteSkiaSharpAsiaankuuluvat kirjastot ovat seuraavat:

Huomaa, että jos projekti täytyy ottaa käyttöön Linux-järjestelmässä, viitteet vaaditaanSkiaSharp.NativeAssets.Linuxluokka, muuten virhe on seuraava:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: Pyynnön suorittamisen aikana on tapahtunut käsittelemätön poikkeus.
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: 'SkiaSharp.SKImageInfo' -tyyppien alustin heitti poikkeuksen.
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Jaettua kirjastoa 'libSkiaSharp' tai sen riippuvuutta ei voi ladata. Latausongelmien diagnosoinnin helpottamiseksi harkitse LD_DEBUG ympäristömuuttujan asettamista: liblibSkiaSharp: cannot open shared object file: No such file or directory
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: SkiaSharp.SKImageInfo:. cctor()
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: --- Sisäisen poikkeuksen pinon jäljityksen loppu ---
03. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) in C: \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:rivi 184
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: osoitteessa HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :rivi 80
3. huhtikuuta 18:51:06 raspberrypi dotnet[6203]: klo lambda_method34(Sulkeminen, objekti, objekti[] )

Jotta voidaan ottaa huomioon, että jotkin fonttifontit saattavat puuttua eri järjestelmissä ja estää varmistuskooditietoja normaalisti näyttämästä, meidän täytyy kopioida fontit manuaalisesti projektiin, luoda uusi fonttikansio projektiin ja kopioida fontit siihen, kuten alla olevassa kuvassa näkyy:



Konfiguraatio on seuraava:

Internetin viitemateriaalien mukaan testin tuottama graafinen varmennuskoodi on seuraava:



Generoidulla CAPTCHA:lla on kaksi haittaa:CAPTCHA on kokonaan musta (helposti tunnistettavissa OCR:llä), ja CAPTCHA-kirjaimet ovat ahtautuneet yhteen ilman väliäRatkaistakseni nämä kaksi ongelmaa optimoin koodin seuraavasti:

HomeController-ohjaimen koodi on seuraava:

Lopulliset renderöinnit ovat seuraavat:


Lopuksi liitä fonttitiedosto:

Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyväVastaus


(Loppu)




Edellinen:[Käänny]. NET 6 Uusi ominaisuus Enumerable.Chunk()
Seuraava:Angular estää vanhemman klikkaustapahtuman laukaisemisen
 Vuokraisäntä| Julkaistu 2022-4-4 klo 12:28:35 |
arvostelu

ASP.NET Core (XIII) selvittääkseen, onko kyseessä Ajaxin pyyntö vai ei
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (kaksitoista) etupään JS, CSS-paketointi ja pakkaus
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) -päätepistereitti lisää middleware-ohjelmiston näyttämään kaikki DI-palvelut
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Yksityiskohtainen selitys konfiguraatioprioriteeteista Core(10):ssä.
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Yksityiskohtainen selitys Coren Middleware-middlewaresta (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Yksityiskohtainen selitys Core Middlewaresta
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Swaggerin käyttöliittymän oletusparametrien pitti Core(8):ssa.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Ydin (7) Perusteellinen analyysi kehyksen lähdekoodista
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI saa manuaalisesti menetelmän objektien injektioon
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (viisi) perustuu CAP:n hajautettuihin transaktioihin
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) -suodatin yhdisti ModelState-mallin validoinnin
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Luo instansseja dynaamisesti ActivatorUtilitiesin avulla
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Ydin (2) Käynnistä sovellus uudelleen koodin mukaan
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) käyttää Redis-välimuistia
https://www.itsvse.com/thread-9393-1-1.html
Julkaistu 2022-4-4 klo 15:02:24 |
Opettele oppimaan
Julkaistu 2022-4-13 08:58:42 |
Tämä on hyvää, pidän siitä. Kiitos kun jaoit kokemuksesi!
Julkaistu 2022-4-14 09:46:41 |
Opettele ison miehen toiminta, kiitos kun jaoit
Julkaistu 2022-8-5 klo 16:25:05 |
Pomo on tehnyt kovasti töitä
 Vuokraisäntä| Julkaistu 2024-11-25 klo 10:33:43 |
SixLabors.ImageSharp on myös erinomainen kirjasto monialustaiseen kuvankäsittelyyn
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com