画像を加工するプログラムを作る場合PixelFormatを決め打ちした方が簡単になります。
今回はPixelFormatをFormat32bppArgbに変換してみたいと思います。
ソース
//
// PixelFormatをFormat32bppArgbに変換する。
//
using System;
using System.Drawing;
using System.Drawing.Imaging;
// コンパイル
// csc GrayToColor.cs
class Prog {
static Bitmap To32bppArg(Bitmap bmp) {
if (bmp.PixelFormat == PixelFormat.Format32bppArgb) return bmp;
var bmp2 = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb);
using(var g = Graphics.FromImage(bmp2)){
g.PageUnit = GraphicsUnit.Pixel;
g.DrawImageUnscaled(bmp, 0, 0);
};
return bmp2;
}
// エントリポイント
static void Main() {
var path = @"H:\csharp\OpenCV\00184.png";
var bmp = new Bitmap(path);
var bmp2 = To32bppArg(bmp);
Console.WriteLine("{0}",bmp.PixelFormat);
Console.WriteLine("{0}",bmp2.PixelFormat);
bmp2.Save(@".\00184.png", System.Drawing.Imaging.ImageFormat.Png);
}
}
実行
Format8bppIndexed
Format32bppArgb
コメント