LinuxでのSystem.Drawing

Linuxで.NETCoreアプリケーションを実行する必要がある場合、主な問題の1つは、標準の.NETCoreパッケージにSystem.Drawingアセンブリがないことです。 MicrosoftはSystem.Drawing.Commonの使用を推奨していますが、それは究極の解決策ではありません。 libgdiplusライブラリをインストールするには、各ユーザーマシンで「sudo」を実行する必要があります。その後も、レンダリング結果はWindowsマシンでの結果とは少し異なります。この問題に対処するために、この記事では、libgdiplusライブラリを使用せずにLinuxでSystem.Drawingを使用する方法について説明します。

LinuxでのSystem.Drawingの使用

幸いなことに、今では解決策があります。以下では、.NETGraphicsAPIであるAspose.Drawingfor.NETが、LinuxでSystem.Drawingを使用するのにどのように役立つかを示します。 Aspose.Drawingを使用すると、ネイティブコードを使用してグラフィックライブラリを削除し、すべてのプラットフォームで画像を同じように見せることができます。

.NET Graphics API-インストールが簡単

ターゲットLinuxマシンにAspose.Drawingをインストールするには、.NETCoreをインストールする必要があります。 Aspose.Drawing.dllをプロジェクトフォルダに入れて、プログラムを実行します。それで全部です。これで、Windows上の.NET Frameworkアプリケーションから使用するのと同じように、System.Drawing名前空間でクラスを使用できます。

Aspose.Drawingバイナリを入手するには、公式Webサイトから最新バージョンをダウンロードしてください。または、次のコマンドを実行して、APIをプロジェクトに直接含めることもできます。

dotnet add package Aspose.Drawing

追加のコンポーネントは必要ありません。 Aspose.Drawingは、ネイティブライブラリを参照せずに、すべての描画自体を実行します。次のようなメッセージを受信することはありません。

Unable to load DLL 'libgdiplus': The specified module could not be found.

また、プラットフォームにインストールされているグラフィックシステムのバージョンを気にする必要はありません。

予測できないプラットフォームの問題はありません

System.Drawing.Commonを使用すると、Windowsで正常に実行されたコードを実行すると、Linuxで予期しないエラーが発生する可能性があります。

WARNING *: Path conversion requested 34759680 bytes (2480 x 3504). Maximum size is 8388608 bytes.
ERROR:region.c:1155:GdipCombineRegionPath: assertion failed: (region->bitmap)

Aspose.Drawingはlibgdiplusに依存しないため、このような問題は発生しません。フルマネージドの描画エンジンがあります。つまり、ネイティブグラフィックライブラリに依存していません。理解できないプラットフォームエラーやプログラムの予測できない動作に遭遇することはもうありません。

同一のレンダリング結果

Aspose.Drawingを使用するもう1つの利点は、サポートされているすべてのプラットフォームで同じレンダリング結果が得られることです。 .NET CoreでSystem.Drawing.Commonを使用する場合、レンダリング結果はWindowsとLinuxで異なって見える場合があります。以下の例を参照してください。

LinuxおよびWindowsでのSystem.Drawing

Aspose.Drawingを使用すると、Windows、Linux、またはAndroid用のクロスプラットフォームグラフィックアプリケーションを作成でき、各プラットフォームで常に同じレンダリング結果が得られます。これは、サードパーティのグラフィックライブラリに依存するのではなく、プラットフォームに依存しない2Dレンダリングエンジンを作成することで実現されました。

グラフィカルプリミティブを除いて、フォントレンダリングはすべてのプラットフォームで同じです。 LinuxのシステムフォントはWindowsとは異なりますが、PrivateFontCollectionを使用して独自のフォントセットをロードできます。もう1つの方法は、MicrosoftフォントのパックをLinuxシステムにインストールし、通常どおりテキストレンダリング関数を呼び出すことです。

Aspose.Drawingを無料でお試しください

Aspose.DrawingはNuGetで利用できます。バイナリまたはMSIインストーラをダウンロードすることもできます。 Aspose.Drawingライブラリを制限付きで使用するか、無料試用ライセンスをリクエストできます。

では、今日試してみませんか?

結論

この記事では、依存関係のないすべてのプラットフォームでSystem.Drawingを使用するのがいかに簡単で、同じ結果が得られるかを見てきました。 Aspose.Drawingの詳細については、公式のページをご覧ください。ご不明な点がございましたら、フォーラムをご利用いただき、今後の投稿やガイドにご期待ください。

関連項目