如何使Image.Save保存为24位图像?

时间:2009-11-09 14:07:02

标签: c# gdi+

如何获取C#以强制保存的位图图像保存为24位图像,这可以在Windows中获得图像的右键单击属性时看到。我保存的所有图像都设置为32位。 我尝试了下面的代码没有运气。源图像也都是24位,但始终保存为32位图像。

ImageCodecInfo bmpCodec = FindEncoder(ImageFormat.Bmp);
EncoderParameters parameters = new EncoderParameters();
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 24);
imgCheque.Save(DestinationFile.ToString(), bmpCodec, parameters);

图像必须正确24位,因为其他程序无法处理32位图像。

提前致谢,

Soultech

2 个答案:

答案 0 :(得分:1)

这有用吗?

// imgCheque source created somewhere else up here
using (Bitmap blankImage = new Bitmap(imgCheque.Width, imgCheque.Height, PixelFormat.Format24bppRgb))
{
    using (Graphics g = Graphics.FromImage(blankImage))
    {
        g.DrawImageUnscaledAndClipped(imgCheque, new Rectangle(Point.Empty, imgCheque.Size));
    }

    ImageCodecInfo bmpCodec = FindEncoder(ImageFormat.Bmp);
    blankImage.Save(@"C:\TEMP\output.bmp", bmpCodec, null);
}

答案 1 :(得分:0)

尝试一下?

ImageCodecInfo bmpCodec = FindEncoder(ImageFormat.Bmp);
EncoderParameters parameters = new EncoderParameters();
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 24L);
imgCheque.Save(DestinationFile.ToString(), bmpCodec, parameters);