我正在尝试使用UIImage
方法从ALAssetRepresentation
正确旋转fullScreenImage
。我有几张以不同设备方向拍摄的测试照片;照片在照片应用中正确显示。 fullScreenImage
的文档说:
在iOS 5及更高版本中,此方法返回完全裁剪,旋转和 调整后的图像 - 与用户在照片或图像中看到的完全相同 选择器。
要使用
UIImage
创建正确旋转的CGImage
对象,请使用imageWithCGImage:scale:orientation:
或initWithCGImage:scale:orientation:
,传递orientation
的值 和scale
。
鉴于文档,我的代码如下所示:
ALAssetRepresentation *rep = [asset defaultRepresentation];
UIImage *img = [UIImage
imageWithCGImage:[rep fullScreenImage]
scale:[rep scale]
orientation:[rep orientation]];
但结果UIImage
的轮换是错误的。当我用[rep orientation]
替换UIImageOrientationUp
时,图片适用于所有测试照片。显然我对于坚持这个“解决方案”犹豫不决,因为它感觉像是一个黑客。我做错了什么?
答案 0 :(得分:11)
ALAssetRepresentation *rep = [asset defaultRepresentation];
UIImage *img = [UIImage
imageWithCGImage:[rep fullScreenImage]
scale:[rep scale]
orientation:UIImageOrientationUp];
在iOS 5下是正确的,全屏图像已经旋转(所以它总是“向上”)。在iOS 4下,行为是不同的。有关更深入的解释,请参阅Orientation does not behave correctly with Photo in ALAsset。