NuGetのMagick.NETを使って、UnityでImageMagickを利用できるようにします。
Unityエディタでの実行およびスタンドアロンでの実行で動作します。
UnityでRenderTextureを画像出力してImageMagickで画像加工するツールの開発などに便利です。
環境
- 開発OS: MacOS AMD64/MacOS AppleSilicon/Windows AMD64
- 実行OS: MacOS AMD64/MacOS AppleSilicon/Windows AMD64
- Unity: 2019.4.19
- Magick.NET: 8.3.3
Magick.NETのダウンロード
以下の2つのパッケージからDLLを拝借します。
それぞれ、 https://www.nuget.org/ から取得します。magick.net.coreを例に説明します。
パッケージのWebページを開いたら、右側に「Download package」リンクがあります。ここからパッケージをダウンロードしてください(下図参照)。
この.nupkgファイルはZIP形式なので、拡張子をzipに変更して解凍しておきましょう。
Unityプロジェクトの作成
新規にUnityのプロジェクトを1つ作成してください。
既存のプロジェクトに対して作業することもできますが、トラブルシュートしづらくなるのでまずは新規でお試しすることをお勧めします。
本記事では対象のUnityプロジェクトパスをPROJECT_PATHと記載します。
DLLを配置する
コピー元、コピー先が重要です。正確にコピーしてください。
コピー元 | コピー先 |
---|---|
解凍先フォルダ/magick.net-q8-x64.8.3.3/lib/netstandard20/Magick.NET-Q8-x64.dll | PROJECT_PATH/Assets/Plugins/Magick.NET-Q8-x64.dll |
解凍先フォルダ/magick.net-q8-x64.8.3.3/runtimes/win-x64/native/Magick.Native-Q8-x64.dll | PROJECT_PATH/Magick.Native-Q8-x64.dll (注意!プロジェクト直下です) |
解凍先フォルダ/magick.net-q8-x64.8.3.3/runtimes/osx-x64/native/Magick.Native-Q8-x64.dll.dylib | PROJECT_PATH/Assets/Plugins/Magick.Native-Q8-x64.bundle (注意!拡張子を変更しています) |
解凍先フォルダ/magick.net.core.8.3.3/lib/netstandard20/Magick.NET.Core.dll | PROJECT_PATH/Assets/Plugins/Magick.NET.Core.dll |
動作テスト
Magick.NETを使った簡単なコードを実行し、エラーがないことを確認します。
例えば、以下のコードは100x100の赤いPNG画像を生成します。
using ImageMagick;
using UnityEngine;
public class imunity : MonoBehaviour
{
void Start()
{
MagickImage image = new MagickImage(MagickColors.Red, 100, 100);
image.Write("output.png");
}
}
このように相対パスで出力ファイルを記載した場合、MacOSでは.appと同じパスに、Windowsでは.exeと同じパスに出力されます。
必要に応じて、MacOSスタンドアロン、Windowsスタンドアロンについても動作を確認します。
Windowsスタンドアロンの場合、以下2点を行わないと正しく動作しません。ご注意ください。
- Build Settings の Architecture で x86_64 を選択
- .exe と同じパスに Magick.Native-Q8-x64.dll をコピー
最後に
Magick.NETはバージョンごとに解凍した際のファイル構成がかなり違うので、より新しいバージョンでトライする場合は対応するファイルがどこに配置されているのか探すところから頑張ることになります。
面倒ごとを避けたい方は上記のバージョンで合わせて作業するとトラブルが少ないと思います。
あと、iOS/Androidで動作させる方法をご存じの方いらっしゃいましたらコメ欄でお教えいただけると大変うれしいです(切実)。