【问题标题】:Using BmpBitmapEncoder for all image formats对所有图像格式使用 BmpBitmapEncoder
【发布时间】:2025-12-13 10:05:02
【问题描述】:

我发现使用 BmpBitmapEncoder 渲染任何类型的图像都可以,我唯一需要做的就是在要保存的文件中发送正确的格式,如下例所示:

BmpBitmapEncoder encoder = new BmpBitmapEncoder();;

encoder.Frames.Add(BitmapFrame.Create(renderer));
using (System.IO.FileStream fs = System.IO.File.Open("file.png", System.IO.FileMode.OpenOrCreate))
{
    encoder.Save(fs);
}

所以,如您所见,图像的名称是“file.png”,这可以正常工作,它将图像保存为 PNG(也适用于 jpeg、tiff、gif),并且可以加载任何图像处理应用程序。

我只是想知道这与为每种类型(PngBitmapEncoder、JpegBitmapEncoder、GifBitmapEncoder 等)使用正确的编码器有何不同。

谢谢。

【问题讨论】:

  • 你能验证它确实保存了 png/jpg 格式吗?通过将文件大小和标题与 .bmp 进行比较?

标签: c# image-processing


【解决方案1】:

您必须使用正确的编码器 PngBitmapEncoder、JpegBitmapEncoder、GifBitmapEncoder。

您以这种方式保存的文件始终是 BMP!

您的测试中发生的情况是,您使用的图像处理应用程序忽略了扩展名并将真实文件格式识别为 BMP。

【讨论】:

  • 哦,这很有道理,我实际上做了一些扩展识别逻辑来选择正确的转换器,我只是想知道有什么区别。谢谢!