C#ビットマップのPixelFormatをFormat32bppArgbに変換する。

C# コンピュータ
C#

画像を加工するプログラムを作る場合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

 

コメント