Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 38588|Jawab: 6

[Inti .NET] ASP.NET Core (empat belas) didasarkan pada captcha gambar SkiaSharp

[Salin tautan]
Dipaparkan pada 2022-4-4 12:25:53 | | | |
Sebelumnya, saat mengembangkan proyek ASP.NET menggunakan .NET Framework, semuanya disebarkan pada sistem Windows, dan tidak dapat lintas platform, sehingga Anda dapat menggunakan System.Drawing untuk menghasilkan kode verifikasi gambar, sebagai berikut:

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

WebAPI mengimplementasikan fungsi kode verifikasi grafis
https://www.itsvse.com/thread-7304-1-1.html

Mengembangkan secara online dengan proyek .NET Core, menghasilkan captcha gambar memerlukan referensi ke pustaka System.Drawing.Common, tetapi untuk saat iniPaket NuGet System.Drawing.Common sekarang dikelompokkan sebagai:WindowsPustaka tertentu。 Saat mengkompilasi untuk sistem operasi non-Windows, Platform Analyzer memperingatkan pada waktu kompilasi. Seperti yang ditunjukkan pada gambar berikut:

Situs panggilan ini dapat diakses di semua platform. 'Font' hanya didukung pada 'windows'.



Sebelum .NET 6, menggunakan paket System.Drawing.Common tidak menghasilkan peringatan waktu kompilasi apa pun dan tidak melemparkan pengecualian runtime apa pun. Dimulai dengan .NET 6, Platform Analyzer mengeluarkan peringatan waktu kompilasi saat mengkompilasi kode referensi untuk sistem operasi non-Windows. Selain itu, kecuali opsi konfigurasi diatur, pengecualian runtime berikut akan dilemparkan:


System.TypeInitializationException : Jenis inisialisasi untuk 'Gdip' melemparkan pengecualian.
      ---- System.PlatformNotSupportedException : System.Drawing.Common tidak didukung pada platform non-Windows. LihatLogin hyperlink terlihat.untuk informasi lebih lanjut.
      Jejak Tumpukan:
           di System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(Nama file string, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): di System.Drawing.Bitmap.. ctor(Nama file string, Boolean useIcm)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): di System.Drawing.Bitmap.. ctor(Nama file string)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): di System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ PindahBerikutnya()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): di System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Jejak Tumpukan Dalam -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): di System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): di System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): di System.Drawing.SafeNativeMethods.Gdip.. CCTOR()

Referensi Kesalahan:

Masalah watermarking .NET Core pada gambar Linux
https://www.itsvse.com/thread-9605-1-1.html

Untuk pemrosesan gambar lintas platform, dokumentasi resmi Microsoft merekomendasikan penggunaan pustaka berikut:

  • GambarTajam
  • SkiaTajam
  • Microsoft.Maui.Grafis

Referensi:Login hyperlink terlihat.

Artikel ini menggunakan perpustakaan SkiaSharp untuk menghasilkan CAPTCHA grafis,SkiaSharp adalah API grafis 2D lintas platform untuk platform .NET berdasarkan perpustakaan grafis Skia Google (skia.org).。 Ini menawarkan API 2D komprehensif yang dapat digunakan di seluruh model seluler, server, dan desktop untuk merender gambar.

Alamat:Login hyperlink terlihat.

Pertama, buat proyek dan referensi ASP.NET Core 6 baruSkiaTajamPerpustakaan yang relevan adalah sebagai berikut:

Perhatikan bahwa jika proyek perlu disebarkan ke sistem Linux, referensi diperlukanSkiaSharp.NativeAssets.Linux, jika tidak, kesalahannya akan menjadi sebagai berikut:

Apr 03 18:51:06 raspberrypi dotnet[6203]: gagal: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: Pengecualian yang tidak ditangani telah terjadi saat mengeksekusi permintaan.
Apr 03 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Jenis inisialisasi untuk 'SkiaSharp.SKImageInfo' melemparkan pengecualian.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Tidak dapat memuat perpustakaan bersama 'libSkiaSharp' atau salah satu dependensinya. Untuk membantu mendiagnosis masalah pemuatan, pertimbangkan untuk mengatur variabel lingkungan LD_DEBUG: liblibSkiaSharp: tidak dapat membuka file objek bersama: Tidak ada file atau direktori seperti itu
Apr 03 18:51:06 raspberrypi dotnet[6203]: di SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
Apr 03 18:51:06 raspberrypi dotnet[6203]: di SkiaSharp.SKImageInfo:. CCTOR()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Akhir dari jejak tumpukan pengecualian dalam ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: di HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, lebar Int32, tinggi Int32, Int32 lineNum, Int32 lineStrookeWidth) di C: \Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:line 184
Apr 03 18:51:06 raspberrypi dotnet[6203]: di HomeCloud.Controllers.HomeController.Test() di C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :baris 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: at lambda_method34(Penutupan , Objek , Objek[] )

Untuk mempertimbangkan bahwa beberapa font font mungkin hilang di bawah sistem yang berbeda, mengakibatkan ketidakmampuan untuk menampilkan informasi kode verifikasi secara normal, kita perlu menyalin font secara manual ke dalam proyek, membuat folder font baru dalam proyek, dan menyalin font ke dalamnya, seperti yang ditunjukkan pada gambar di bawah ini:



Konfigurasinya adalah sebagai berikut:

Menurut bahan referensi di Internet, kode verifikasi grafis yang dihasilkan oleh pengujian adalah sebagai berikut:



CAPTCHA yang dihasilkan memiliki dua kelemahan:CAPTCHA serba hitam (mudah dikenali oleh OCR), dan huruf CAPTCHA berdesakan tanpa spasi apa punUntuk mengatasi kedua masalah ini, saya mengoptimalkan kode sebagai berikut:

Kode pengontrol HomeController adalah sebagai berikut:

Rendering akhir adalah sebagai berikut:


Terakhir, lampirkan file font:

Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakanJawab


(Akhir)




Mantan:[Berputar]. NET 6 Fitur Baru Enumerable.Chunk()
Depan:Angular mencegah pemicu peristiwa klik induk
 Tuan tanah| Dipaparkan pada 2022-4-4 12:28:35 |
resensi

ASP.NET Core (XIII) untuk menentukan apakah itu permintaan Ajax atau tidak
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Inti (dua belas) front-end JS, bundling CSS, dan kompresi
https://www.itsvse.com/thread-10282-1-1.html

Rute titik akhir ASP.NET Core (XI) menambahkan middleware untuk menampilkan semua layanan DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Penjelasan terperinci tentang prioritas Konfigurasi di Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Penjelasan terperinci tentang middleware Middleware dari Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Penjelasan rinci tentang Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET lubang parameter default UI Swagger di Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Inti (7) Analisis mendalam dari kode sumber kerangka kerja
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI secara manual memperoleh metode penyuntikan objek
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (lima) didasarkan pada transaksi distribusi CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) memfilter validasi model ModelState terpadu
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Inti (iii) Membuat instans secara dinamis menggunakan ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Inti (2) Mulai ulang aplikasi dengan kode
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) menggunakan caching Redis
https://www.itsvse.com/thread-9393-1-1.html
Dipaparkan pada 2022-4-4 15:02:24 |
Belajar belajar
Dipaparkan pada 2022-4-13 08:58:42 |
Ini bagus, saya menyukainya. Terima kasih telah berbagi!
Dipaparkan pada 2022-4-14 09:46:41 |
Pelajari pengoperasian pria besar, terima kasih telah berbagi
Dipaparkan pada 2022-8-5 16:25:05 |
Bos telah bekerja keras
 Tuan tanah| Dipaparkan pada 2024-11-25 10:33:43 |
SixLabors.ImageSharp juga merupakan perpustakaan yang bagus untuk pemrosesan gambar lintas platform
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com