0

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

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

寻找解决方案使我发现我应该使用 UIImage 的 imageOrientation 但实际上:

theImage.imageOrientation is always equal to UIImageOrientationUp

我错过了什么?

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

4

1 回答 1

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);
    ……
}

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

于 2014-04-24T08:16:02.153 回答