如何改變Bitmap中的PixelFormat?


如何改變Bitmap中的PixelFormat呢?

很可惜此屬性無法直接改變,因為Bitmap在建立的時候就已決定內部的像素格式

因此只能重新建立一個Bitmap,但我們如果想要這個新建立的Bitmap有相同的影像

可以藉由GDI+繪製到新建立的Bitmap之中

今天假設想將Bitmap轉成32bit

那範例如下:


public Bitmap ChangePixelFormatTo32Argb(Bitmap SourceBmp,bool IsDispose)
{
    /*宣告新的Bitmap,尺寸與輸入的相同*/
    Bitmap ResultBmp = new Bitmap(SourceBmp.Width, SourceBmp.Height,
                    PixelFormat.Format32bppRgb);
    
    /*將輸入的影像繪製到新宣告的Bitmap*/
    using (var gr = Graphics.FromImage(ResultBmp))
        gr.DrawImage(SourceBmp, new Rectangle(0, 0, SourceBmp.Width, SourceBmp.Height));

    if (IsDispose)
        SourceBmp.Dispose();

    return ResultBmp;
}

留言