我正在将图片导入我的应用程序并根据EXIF元数据旋转图像。在此之后我将旋转的图像保存到我的磁盘,但是因为我仍然将旋转的图像元数据保留在图像上,并且窗口认为它应该再次旋转...基本上意味着我的图像最终颠倒了。
到目前为止,我有:
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属性
上重置图像方向答案 0 :(得分:1)
得到了...... 替换
prop.Value[0] = 1;
与
ImportedPhotoMetaData.SetQuery("System.Photo.Orientation", 1);