UIImageOrientation对于加载的UIImage的左/右不正确?

时间:2011-08-26 19:34:56

标签: iphone uikit uiimage exif uiimageorientation

我正在加载标有任意EXIF方向数据(8个方向之一)的JPG。我下载了八个示例图片文件from here(从this blog post链接)。

图像8表示EXIF标签8,其是90度顺时针旋转。这可以通过在愚蠢的观察器中查看此图像来确认,如Paintbrush。

但是,当我在iOS项目中将其加载到UIImage中并在其上调用-imageOrientation时,我得到UIImageOrientationLeft。根据{{​​3}},

  

UIImageOrientationLeft

     

图像旋转90度逆时针,如图所示。

...这不是底层图片的样子。

EXIF方向6的情况恰恰相反,我希望它显示为Left,但显示为Right。

这里的文档错了吗?我错过了一些明显的东西吗感谢。

3 个答案:

答案 0 :(得分:8)

我有一段时间遇到同样的问题。似乎UIImageOrientation文档描述了如果应用指定的方向,直立图像会发生什么。例如,如果您拍摄直立图像并应用UIImageOrientationLeft,它将逆时针旋转90°。

另一方面,exif文档描述了图像数据的方向是什么,以生成直立图像。因此,对于EXIF代码8,图像数据必须顺时针旋转90°才能生成直立的图像。

事实证明,只有UIImageOrientationLeft和UIImageOrientationRight才会出现这个问题,因为所有其他问题都以同样的方式出现。

答案 1 :(得分:1)

我认为问题在于原点(应用旋转的地方)。使用UIImage时,原点位于左上角,使用CGImage时,原点位于左下角。

答案 2 :(得分:0)

我找到了一个有趣的答案:http://blog.logichigh.com/2008/06/05/uiimage-fix/