重置图像方向EXIF元数据标志

时间:2014-07-25 15:18:24

标签: c# image orientation metadata

我正在将图片导入我的应用程序并根据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属性

上重置图像方向

1 个答案:

答案 0 :(得分:1)

得到了...... 替换

prop.Value[0] = 1;

ImportedPhotoMetaData.SetQuery("System.Photo.Orientation", 1);