【问题标题】:How to get the image format of a BitmapImage?如何获取 BitmapImage 的图像格式?
【发布时间】:2017-04-20 19:52:48
【问题描述】:

我有一个带有 Image 元素的 WPF 应用程序,其源绑定到 BitmapImage 类型的属性。我需要将此图像及其格式(jpg,tif,基本上我正在尝试使用 ImageFormat 类)保存到我们的数据库中。如何获取 BitmapImage 的格式?

【问题讨论】:

  • 您不需要单独存储格式。当您将 Bi​​tmapSource 编码为字节数组时,字节数组已经包含指示格式的标头(在前几个字节中)。这就是解码可以自动检测格式的原因。
  • 内存中的BitmapImage没有文件格式;它不是文件,而是内存中的对象。它仅在以特定文件格式保存为字节时才获得格式。

标签: c# wpf image


【解决方案1】:

Image 是一个显示 BitmapImage 的控件。保存图像没有意义。您要保存 bitmapImage(image.Source)。此外,您不应该关心 bitmapImage 的原始编码/解码。这与磁盘上文件中的数据压缩有关。现在这个东西在内存中作为 BitmapImage 没有压缩。您必须决定本地文件的编码方法。对于 .jpg,您必须运行以下代码:

BitmapEncoder bme = new JpegBitmapEncoder();
bme.Frames.Add(BitmapFrame.Create(image.Source));
using (var filestream = new System.IO.FileStream("temp.jpg", System.IO.FileMode.Create))
{
    bme.Save(fileStream);
}

【讨论】:

    【解决方案2】:

    如何获取 BitmapImage 的格式?

    你不能,因为它没有固定的格式。

    您可以使用任何从BitmapEncoder 派生的类来编码BitmapSource。然后由实际使用的 BitmapEncoder 确定格式,例如PNG 当你使用PngBitmapEncoder时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2015-10-09
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多