C#のWinFormsでMagick.NETを使ってGIMPのXCFファイルを読み込む

C# コンピュータ
C#

ImageMagickはいろいろな画像フォーマットに対応した画像ライブラリ?です。そちらを.Netに対応させたパッケージがNuGetに有りましたので、GIMPのXCFファイルを読み込むサンプルを作成してみました。

プロジェクトの作成

dotnet new winforms --name プロジェクト名
cd プロジェクト名
dotnet add package System.Drawing.Common
dotnet add package Magick.NET.Core
dotnet add package Magick.NET.SystemDrawing
dotnet add package Magick.NET-Q8-AnyCPU

(ToBitmap()が動作するまで、いろいろパッケージを追加したので不要なパッケージがあるかもしれません)

ソースコード

using ImageMagick;

namespace _03_read_xcf;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // xcfファイルのパス
        const string xcfPath = @"C:\Users\karet\Pictures\gimp.xcf";
        
        // ピクチャボックス生成
        PictureBox picbox1 = new()
        {
            Dock = DockStyle.Fill,
            SizeMode = PictureBoxSizeMode.Zoom,
        };
        this.Controls.Add(picbox1);
        // ロードイベント
        this.Load += (sender, e) =>
        {
            using var magick = new ImageMagick.MagickImage(xcfPath);
            picbox1.Image = magick.ToBitmap();
        };
    }
}

実行

dotnet run


ちなみに一番下のレイヤーが表示されているようです。

C#からImageMagickを使う方法があることは以前から知っていましたが、画像加工のライブラリは沢山ありますし、個人的にはSystem.Drawingで概ね用が足りており、少し手の込んだ処理をする場合OpenCVがあるので、使い道が思いつかず試したことがありませんでした。
画像加工にGIMPを使っているのですが、こちらのファイル形式XCFはエクスプローラーでサムネイル表示やプレビュー表示をすることが出来ません。(知らないだけかも?)GIMPで開いて中身を確認していますが、GIMPは起動するだけでも時間がかかり、不便に感じていました。
ImageMagickでXCFを読み込むことが出来ることが確認できたので、自前でプログラムを作ればXCF対応のエクスプローラーもどきを作ることが出来ます。プログラミングスキル的には自分には難しそうですが、いつか作れれば良いなぁと思っています。

コメント