UIImageOrientation /的UIImagePickerController

时间:2014-04-23 12:00:19

标签: uiimagepickercontroller uiimageorientation

我正在使用相机在IOS应用中拍照。 它是有效的,我唯一的问题是当我试图弄清楚用户在拍照时如何拿着设备。

如果我能以适当的方式显示图像,而不是倒置或旋转90度,那会好得多。

寻找解决方案让我知道我应该使用UIImage的imageOrientation但实际上:

theImage.imageOrientation is always equal to UIImageOrientationUp

我错过了什么?

我做了各种研究和实验,但没有任何改变。 此时我没有再显示任何代码,原因很简单,我不知道要显示哪个部分来帮助找到问题。

1 个答案:

答案 0 :(得分:1)

因为我能够自己找到解决方案。我把它放在这里,以防它可能对其他人有用。

查看保存图像上“imageOrientation”字段的值(就像我正在做的那样),确实出于某种原因总是显示为UIImageOrientationUp。 另一方面,在imagePickerController中查看它:didFinishPickingMediaWithInfo:更有意义。

经过一些研究和试验,我最终得到了一个看起来像这样的方法:

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    ……
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
    ……

    if ((image.imageOrientation==UIImageOrientationLeft)||
        (image.imageOrientation==UIImageOrientationRight)||
        (image.imageOrientation==UIImageOrientationDown)) {
        UIGraphicsBeginImageContext(image.size);
        [image drawAtPoint:CGPointMake(0.0, 0.0)];
        image=UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }

    NSData *mediaData = UIImagePNGRepresentation(image);
    ……
}

然后我的照片显示方向正确,当我想稍后在我的应用程序中使用它时。