【问题标题】:how to make Image.Save save as a 24-bit image?如何使 Image.Save 保存为 24 位图像?
【发布时间】:2019-10-05 08:15:34
【问题描述】:

如何让 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 位图像的不同程序读取的。

提前致谢,

灵魂科技

【问题讨论】:

  • 我认为发布的代码有问题...仔细检查bmpCode vs jpegCodec
  • 是的,抱歉,我正在尝试创建位图。我现在已经修改了。谢谢

标签: c# gdi+


【解决方案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);
}

【讨论】:

    【解决方案2】:

    试试这个?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-13
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多