Image.RetateFlip()之后的Image.GetThumbnailImage()似乎忽略了旋转

时间:2017-06-20 20:24:14

标签: c# image exif

我正在使用Image.RotateFlip()来修正某些照片的方向。我阅读了每张照片的EXIF信息,然后相应地旋转/翻转图像使其直线上升。我的代码是这样的:

//get info before processing.
var imgf = img.RawFormat;

//rotate and/or flip.
img.RotateFlip(rfty);

//reset orientation info.
img.RemovePropertyItem(km_iPropertyTagOrientation);
img.RemovePropertyItem(km_iPropertyTagThumnbailOrientation);

//save fixed image to a new file.
string strFilenameNew = Path.ChangeExtension(strFilename, "temp");
img.Save(strFilenameNew, imgf);

//replace original file.
File.Delete(strFilename);
File.Move(strFilenameNew, strFilename);

如您所见,我旋转/翻转图像,删除编码旧方向的EXIF信息,最后我将其保存为相同格式并替换原始文件。

当我将照片上传到http://metapicz.com时,这就是我得到的:

  • 来源照片(旋转90度,带方向数据):图像看起来旋转,横向纵横比,方向显示为旋转90 CW。这就是你所期望的。

enter image description here

  • 已修复照片(由上面的代码处理):图片看起来笔直,纵向宽高比,方向数据未报告。这也是你所期望的。

enter image description here

到目前为止,这么好。现在,我使用Image.GetThumbnailImage()通过将其大小缩放20%来获取固定照片的缩略图。奇怪的是,生成的缩略图再次旋转!当我将其上传到http://metapicz.com时,这就是我得到的:

  • 缩略图照片(从固定照片中获取):图像看起来旋转,纵向宽高比,方向数据未报告。这很尴尬,因为照片现在变形,因为纵横比从固定照片(肖像)中保留,但照片中的图像看起来像在源照片中一样旋转!

enter image description here

您可以在此处找到这组照片(来源,固定和缩略图):https://verdewek-my.sharepoint.com/personal/cesargon_verdewek_com/_layouts/15/guestaccess.aspx?folderid=0d56479242b154fb7a31ae9a96f7be9cb&authkey=AbT_VQeoKU2EoVDuhvM2RgM

知道我可能缺少什么吗?谢谢。

0 个答案:

没有答案