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対応のエクスプローラーもどきを作ることが出来ます。プログラミングスキル的には自分には難しそうですが、いつか作れれば良いなぁと思っています。
コメント