この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 38588|答える: 6

[.NET Core] ASP.NET Core(14)はSkiaSharpの画像キャプチャに基づいています

[リンクをコピー]
2022年4月4日 12:25:53に投稿 | | | |
以前は.NET Frameworkを使って ASP.NET プロジェクトを開発する際、すべてWindowsシステムにデプロイされており、クロスプラットフォームではなかったため、System.Drawingを使って画像検証コードを以下のように生成できました。

asp.net MVC 美しい画像キャプチャ
https://www.itsvse.com/thread-4911-1-1.html

WebAPIはグラフィカル検証コード関数を実装しています
https://www.itsvse.com/thread-7304-1-1.html

.NET Coreプロジェクトでオンライン開発を進める際、画像キャプチャを生成するにはSystem.Drawing.Commonライブラリを参照する必要がありますが、現時点ではSystem.Drawing.Common NuGetパッケージは現在、以下のようにグループ化されています:ウィンドウズ特定のライブラリ。 非Windowsオペレーティングシステム向けにコンパイルする場合、プラットフォームアナライザーはコンパイル時に警告を表示します。 以下の図に示されています:

この呼びかけサイトはすべてのプラットフォームでアクセス可能です。 「フォント」は「ウィンドウ」でのみサポートされています。



.NET 6以前は、System.Drawing.Commonパッケージを使用してコンパイル時の警告を生成せず、ランタイム例外も発生しませんでした。 .NET 6以降、プラットフォームアナライザーは非Windowsオペレーティングシステムの参照コードをコンパイルする際にコンパイル時警告を発行します。 また、設定オプションが設定されていない限り、以下のランタイム例外がスローされます:


System.TypeInitializationException : 'Gdip'の型初期化器が例外を投げました。
      ---- System.PlatformNotSupportedException : System.Drawing.Common は非Windowsプラットフォームではサポートされていません。 見るハイパーリンクのログインが見えます。詳細はこちらをご覧ください。
      スタックトレース:
           at 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(String filename, Boolean useIcm)
        /_/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()+MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): at 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): at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): System.Drawing.SafeNativeMethods.Gdip.. cctor()

エラーの参考文献:

Linux画像における.NET Coreの透かし問題
https://www.itsvse.com/thread-9605-1-1.html

クロスプラットフォーム画像処理には、Microsoftの公式ドキュメントでは以下のライブラリの使用を推奨しています。

  • イメージシャープ
  • スキアシャープ
  • Microsoft.Maui.Graphics

参考:ハイパーリンクのログインが見えます。

本記事ではSkiaSharpライブラリを使用してグラフィカルCAPTCHAを生成します。SkiaSharpは、GoogleのSkiaグラフィックライブラリ(skia.org)をベースにした.NETプラットフォーム向けのクロスプラットフォーム2DグラフィックスAPIです。。 モバイル、サーバー、デスクトップモデルで画像をレンダリングできる包括的な2D APIを提供します。

住所:ハイパーリンクのログインが見えます。

まず、新しい ASP.NET Core 6プロジェクトとリファレンスを作成しますスキアシャープ該当する図書館は以下の通りです:

プロジェクトをLinuxシステムに展開する場合は、参照が必要ですSkiaSharp.NativeAssets.Linuxクラスでなければ誤差は次のようになります。

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
4月3日 18:51:06 raspberrypi dotnet[6203]: リクエスト実行中に未処理の例外が発生しました。
4月3日 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: 'SkiaSharp.SKImageInfo'のタイプ初期化器が例外を投げました。
4月3日 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: 共有ライブラリ「libSkiaSharp」またはその依存関係のいずれかを読み込めません。 読み込み問題の診断を助けるために、LD_DEBUG環境変数を設定することを検討してください:liblibSkiaSharp: shared object file not open with shared object file: no such file or directory
4月3日 18:51:06 raspberrypi dotnet[6203]: at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
4月3日 18:51:06 raspberrypi dotnet[6203]:SkiaSharp.SKImageInfo:. cctor()
4月3日 18:51:06 raspberrypi dotnet[6203]: --- End of inner exception stack trace ---
4月3日 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:line 184
4月3日 18:51:06 raspberrypi dotnet[6203]: at HomeCloud.Controllers.HomeController.Test() in C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs:80行目
4月3日 18:51:06 raspberrypi dotnet[6203]: lambda_method34(クロージャー、オブジェクト、オブジェクト[])

異なるシステムで一部のフォントフォントが欠落し、検証コード情報を正常に表示できない可能性があることを考慮するために、フォントを手動でプロジェクトにコピーし、新しいフォントフォルダを作成し、フォントをコピーする必要があります。以下の図のように。



構成は以下の通りです:

インターネット上の参考資料によると、テストによって生成されるグラフィカル検証コードは以下の通りです。



生成されたCAPTCHAには2つの欠点があります。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 コア(12)フロントエンド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 Core (9)のミドルウェアミドルウェアの詳細な説明。
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET コアミドルウェアの詳細な説明
https://www.itsvse.com/thread-8126-1-1.html

Core(8)のSwagger UIのデフォルトパラメータの穴 ASP.NET。
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET コア(7) フレームワークソースコードの詳細な分析
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DIはオブジェクト注入の方法を手動で取得します
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET コア(5)はCAP分散トランザクションに基づいています
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET 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時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com