【发布时间】:2014-07-25 15:18:24
【问题描述】:
我正在将一张图片导入我的应用程序并根据 EXIF 元数据旋转图片。在此之后,我将旋转后的图像保存到我的磁盘上,但由于我仍然在图像上留下了旋转后的图像元数据,并且 windows 认为它应该再次旋转它......基本上意味着我的图像最终是颠倒的。
到目前为止,我得到了:
using (Stream sourceStream = File.Open(dlg.FileName, FileMode.Open, FileAccess.Read))
{
BitmapDecoder sourceDecoder = BitmapDecoder.Create(sourceStream, createOptions, BitmapCacheOption.OnLoad);
// Check source is has valid frames
if (sourceDecoder.Frames[0] != null && sourceDecoder.Frames[0].Metadata != null)
{
sourceDecoder.Frames[0].Metadata.Freeze();
// Get a clone copy of the metadata
BitmapMetadata sourceMetadata = sourceDecoder.Frames[0].Metadata.Clone() as BitmapMetadata;
ImportedPhotoMetaData = sourceMetadata;
}
}
和
using (var image = Image.FromFile(dlg.FileName))
{
foreach (var prop in image.PropertyItems)
{
if (prop.Id == 0x112)
{
if (prop.Value[0] == 6)
rotate = 90;
if (prop.Value[0] == 8)
rotate = -90;
if (prop.Value[0] == 3)
rotate = 180;
prop.Value[0] = 1;
}
}
}
但是 prop.Value[0] = 1;行似乎没有重置图像元数据。我需要在 ImportedPhotoMetaData 属性上重置图像方向
【问题讨论】:
标签: c# image orientation metadata