90度图像旋转和重置EXIF旋转

3

我有一段批量调整数字照片大小的代码。

有些照片是竖向拍摄的。

对于竖向拍摄的照片,我需要将它们旋转。

我正在使用以下C#代码来旋转照片:

bmpOrig.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);
bmpOrig.Save(filename, ImageFormat.Jpeg);

这个网页上的图片显示正常(符合我的要求)。

但是,如果我在Photoshop(和HP照片查看器)中查看新图片,它会显示旋转的。

我进行了大量的研究,并相信有EXIF数据标记该图像已经被旋转。

我的问题是:如何重置此EXIF数据以指示图像不需要旋转?

我正在使用VS 2010进行开发。

谢谢。


1
http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encodervalue.aspx - Hans Passant
3个回答

2

确认 Save 命令是否已经写入了更改?

可以通过将 Write 命令放在 try/catch 块中进行确保。


1

Exif方向标签ID为0x0112

您可以使用img.GetPropertyItem(0x0112)来检索它,然后使用img.RemovePropertyItem(0x0112)来删除它(如果您物理旋转图像以补偿该值)。

请参阅此答案,了解一个小的辅助类,可以完成这个操作(包含完整源代码)。


1
据我了解,EXIF信息存储在Image类的属性中,因此请浏览这些属性并删除有问题的属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接