Ubuntu 18.04 LTSの.NET CoreでSystem.Drawing.Commonを使う

もともと.NETのSystem.DrawingはWindowsのGDI+でしか動かない。
そんな中、MSが出してくれた.NET Core向けのSystem.Drawingライブラリがこれ。
Nugetで導入できる。

Windowsだと特になにもしなくても動作するのだが、
Ubuntuではlibgdiplusのインストールが必要。


画像編集ならSkiaSharpライブラリが使いやすかったので、こちらも参考にどうぞ。

■ libgdiplus をいれる?

じゃあaptしようぜ!って話なのだが、入れられるバージョンが古すぎてバグだらけでしょうもない。
(アルファチャンネルがちゃんと動かないとか)

というわけで最新ソースからビルドしてlibgdiplusを入れるのがよいと思う。結構直ってるぽかった。
最新ソースから入れてもまだバグっぽい動作をするけどこれは今後に期待!というか貢献せねば。

■ libgdiplusをソースからビルド

手順ほぼこのまま。
参考:GitHub – mono/libgdiplus: C-based implementation of the GDI+ API

ビルドに必要なパッケージをインストールする。

apt-get install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev

GitHubからソースをクローンする。

cd
git init
git clone https://github.com/mono/libgdiplus.git

スクリプトを実行していつものmake。

cd libgdiplus
./autogen.sh
make
./configure
make install

無事インストールできたらライブラリを有効化する。

ldconfig

有効化の確認は以下でOK。

ldconfig -p | grep libgdiplus

これでソースからビルドしたlibgdiplusで.NET Coreが動く!簡単!