UIImagePicker 拍照时旋转错误

Posted

技术标签:

【中文标题】UIImagePicker 拍照时旋转错误【英文标题】:UIImagePicker wrong rotation when taking a picture 【发布时间】:2013-10-13 19:11:35 【问题描述】:

我正在尝试用我的 iPad 应用拍照,但是当我启动 UIImagePickerController 时,相机以错误的方向显示图像。

这是我调用 UIImagePickerController 的代码:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
    if (buttonIndex == 0 || buttonIndex == 1) 
        // Initialization
        self.imgPicker = [[UIImagePickerController alloc] init];
        self.imgPicker.allowsEditing = YES;
        self.imgPicker.delegate = self;

        // Chosing the source
        if (buttonIndex == 0) 
            self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // Displayed in the good orientation
        
        else 
            self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            self.imgPicker.showsCameraControls = YES;
        

        // Popup pour la photo
        self.imgPicker.allowsEditing = YES;
        self.imgPicker.contentSizeForViewInPopover = CGSizeMake(1000, 700);
        self.photoPopOver.delegate = self;
        self.photoPopOver = [[UIPopoverController alloc] initWithContentViewController:self.imgPicker];
        [self.photoPopOver presentPopoverFromRect:self.photoBut.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    
    else 
        [self cancel];
    

须知: - 当我将sourceType 设置为UIImagePickerControllerSourceTypePhotoLibrary 时,视图显示正确 - 拍照时,显示在良好的旋转中

我不知道告诉它是否有用,但在父视图控制器中,我有这个:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);


- (BOOL)shouldAutorotate 
    return YES;


- (NSUInteger)supportedInterfaceOrientations 
    return UIInterfaceOrientationMaskLandscape;

我该如何解决?非常感谢!

【问题讨论】:

【参考方案1】:

// 解决方案是修复使用UIImagePickerViewController 或相机拾取的UIImage 的方向。

这是一个解决方向问题的示例check out here

定义了一个类别来解决 ios 中的方向问题。当您在 IOS 设备中使用“相机”应用程序以纵向模式拍摄照片然后通过 UIImagePickerViewController 在您的应用程序中使用它时会发生这种情况,因为相机的默认方向是 Landscape

【讨论】:

【参考方案2】:

这听起来更像是您遇到的问题是相机预览的方向不正确,而不是捕获的图像。 Here is some code to fix your problem.

【讨论】:

以上是关于UIImagePicker 拍照时旋转错误的主要内容,如果未能解决你的问题,请参考以下文章

从 iphone 设备上传图像时出现图像方向问题

UIIMagePicker 相机横向方向问题

绕过 UIImagePicker 预览窗口

使用 UIAlertController 在 UIImagePicker 中“应用程序试图以模态方式呈现活动控制器”

使用 UIImagePicker 一次后的内存警告

在 iPhone 上的 UIImagePicker 中重新调整图像大小