bitmap.save将其pixelFormat更改为32位深度

时间:2016-07-24 13:35:56

标签: c# bitmap save

我正面临一个我无法解决的问题,所以我决定问你们。

我的代码非常简单:

public void OpenSaveImageDialog(Bitmap bitmapImage)
    {
        var dlg = new SaveFileDialog
        {
            DefaultExt = DialogType.Image.defaultExt,
            Filter = DialogType.Image.filter
        };

        dlg.ShowDialog();

        bitmapImage.Save(dlg.FileName);
    }

Funcion参数是一个像素格式等于24bppRgb的位图。在保存操作期间,我必须预先设置pixelFormat和位深度。但是在我保存文件并检查其属性后,它被保存为32位深度图像。这是为什么?如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下扩展方法保存为Format24bppRgb

True -> False

如何使用并保存到名为fname的文件:

a -> Void

<强> EDIT2:

您可以使用以下方法将图像另存为ImageTo24bpp

public static class ImageExtensions
{
    public static Bitmap ImageTo24bpp(this Image img)
    {
        var bmp = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
        using (var gr = Graphics.FromImage(bmp))
            gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
        return bmp;
    }
}