【发布时间】: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;
}
所以有两种处理方法:
- 将
Image控件设置为忽略EXIF 元数据 - 从
BitmapImage中删除 EXIF 元数据
你能帮我处理这些吗?
【问题讨论】:
-
请注意,您不需要同时调用
stream.Close()和stream.Dispose()。一个就够了。更好的是,使用using块,它会自动处理流,例如using (var stream = new MemoryStream(bytes)) { ... }。 -
我知道,这段代码经过大量尝试,所以没有优化:)
-
您尝试过我发布的链接上的代码还是发生了什么?