【问题标题】:WPF image control and jpg rotation metadataWPF 图像控制和 jpg 旋转元数据
【发布时间】:2017-02-06 21:04:28
【问题描述】:

我在 WPF 中使用 Image 控件时遇到了一些问题。

我有一个 jpg 文件,加载时旋转错误,即使我在 Windows 中旋转这张图片(右键单击和rotate left/right),应用程序也没有变化。

图片中似乎有一些 EXIF 元数据,与错误的图片一起旋转。

我正在从 www 读取图像,所以我没有本地文件(我不想拥有它)。以下是我将byte[] 转换为BitmapImage 的方法:

public static BitmapImage BitmapImageFromByteArray(Byte[] bytes)
{
    MemoryStream stream = new MemoryStream(bytes);
    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.CacheOption = BitmapCacheOption.OnLoad;
    image.StreamSource = stream;
    image.EndInit();
    stream.Close();
    stream.Dispose();
    return image;
}

所以有两种处理方法:

  1. Image 控件设置为忽略EXIF 元数据
  2. BitmapImage 中删除 EXIF 元数据

你能帮我处理这些吗?

【问题讨论】:

  • 请注意,您不需要同时调用stream.Close()stream.Dispose()。一个就够了。更好的是,使用 using 块,它会自动处理流,例如 using (var stream = new MemoryStream(bytes)) { ... }
  • 我知道,这段代码经过大量尝试,所以没有优化:)
  • 您尝试过我发布的链接上的代码还是发生了什么?

标签: c# wpf


【解决方案1】:

查看以下链接中的代码示例。

使用 C# 和 WPF 库从图像文件中删除 Exif 数据: http://www.techmikael.com/2009/07/remove-exif-data-from-image-files-with.html

另一种选择可能是使用 RotateTransform 来旋转 Image 元素:

How to do rotation around control's center in XAML

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多