この前、.NetMVCのWebアプリでSystem.Drawing使って画像作るとGDI+エラーが出るっていうの書いた。
System.Drawing使えないとなると結構しんどいので、他のライブラリを使ってみる。画像っていったらやっぱりImageMagickかしらね。ちょっと調べてみると結構色々あるのね。↓のやつら。
ImageSharpなんか良さげなので使ってみよーかと思ったら、.net4.5は対応外だそうです。残念。対応したら使ってみよ。
で、結局ImageMagick(Magick.NET)に落ちついたわけですが。Nugetでインストールして↓の感じで作ってみた。
//全部をImageMagickでやるのはしんどかったので、
//エラーが出るところだけ書き換え
Color c = Color.FromArgb(0xFF, Color.FromArgb(Convert.ToInt32("0xD9333F", 16)));
Font f = new Font("MS 明朝", 12);
using (Bitmap img = new Bitmap(100, 64))
{
using (Graphics g = Graphics.FromImage(img))
using (Pen pen = new Pen(c))
{
g.DrawLine(pen, 0, 0, 100, 0);
g.DrawString("Something Text...", f, new SolidBrush(c), 5, 5);
}
string folder = "適当なフォルダ";
string filename = "適当なファイル名";
fullFileName = System.IO.Path.Combine(folder, filename);
//GDI+エラーが出るのは保存のところ ↓の感じ
//img.Save(fullFileName, ImageFormat.Png);
//↑の保存をImageMagickを使って保存に変える
using (ImageMagick.MagickImage image = new ImageMagick.MagickImage(img))
{
image.Format = ImageMagick.MagickFormat.Png;
image.Write(fullFileName);
}
}
今のところエラーは出てないけど、様子見なり。
で、保存の部分だけ使ったのですが、ホントはImageMagickで日本語のテキスト出せなかったので保存だけに逃げました。
コマンドラインから使う場合は出す方法が色々見つかるんだけど、.netから呼ぶ場合のがどうしてもわからなかった。何となく、フォントの指定がうまくできない。気が向いたら調べてみよう。