備忘録

備忘録

.NET CoreでSystem.Drawingを使う

Ⅰ. はじめに

System.Drawing は WindowsのGDI+に依存している為標準の.NET Coreで利用することができません。
解決策として CoreCompat.System.Drawing.v2 を使う方法を紹介します。

※2018/04/26追記
CoreCompat.System.Drawing.v2はlibgdiplus側のメモリリークや処理が遅いといった問題があります。
理由がなければMagick.NET等の別のライブラリを利用した方が良いです。

Ⅱ. Windowsの場合

1. NuGet で CoreCompat.System.Drawing.v2 をインストールする
Install-Package CoreCompat.System.Drawing.v2

※「プレリリースを含める」にチェックを入れる必要があります。

Ⅲ. Linux/macOSの場合

1. NuGet で CoreCompat.System.Drawing.v2 をインストールする
$ dotnet add package CoreCompat.System.Drawing.v2 -v 5.2.0-preview1-r131
以下のエラーが出る場合
Unhandled Exception:
  System.TypeInitializationException:
    The type initializer for 'System.Drawing.GDIPlus' threw an exception. --->
      System.DllNotFoundException: Unable to load DLL 'gdiplus':
        The specified module or one of its dependencies could not be found.

これを実行して下さい。

$ apt-get install -y libgdiplus