iphone - UIImage imageOrientation 返回 0

标签 iphone objective-c ios5

我正在 iOS 5 中开发 iPhone 应用程序。我使用 UIImagePickerController 让用户选择图像,并且我需要知道图像的方向。

当选择图像时,我有 UIImagePickerControllerDelegate 方法的以下代码:

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    UIImage *originalImage = nil;
    UIImage *editedImage = nil;

    // Handle a still image picked from a photo album
    if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeImage, 0) 
        == kCFCompareEqualTo) {

        editedImage = (UIImage *)[info objectForKey:UIImagePickerControllerEditedImage];
        originalImage = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];

        NSLog(@"editedImage.imageOrientation = %d", editedImage.imageOrientation);
        NSLog(@"originalImage.imageOrientation = %d", originalImage.imageOrientation);

        imageToUse = nil;
        if (editedImage)
            imageToUse = editedImage;
        else 
            imageToUse = originalImage;

    }
}

有人知道为什么 NSLog 指令中的 imageOrientation 值总是 0 吗?我尝试过横向和纵向图像,结果总是相同的。

所选图像不为零,因为我在 UIImageView 中显示它没有问题。

谢谢。

最佳答案

图像方向指示图像是纵向还是横向格式。

方向指定图像数据在显示之前如何有效地转换/旋转。通常,例如,无论相机当时的方向如何,相机拍摄的图像的数据格式都是相同的。也就是说,以纵向形式拍摄的图像可以以其“原始”形式显示为旋转的横向图像(当然这取决于相机)。

为了克服这个问题,图像元数据会根据拍摄图像时相机方向的信息进行更新。有了这些信息,UIUmage 就可以根据元数据旋转图像,以正确的方式向上显示图像。

如果您需要确定图像的最终格式是纵向还是横向,只需比较宽度和高度即可:)

蒂姆

关于iphone - UIImage imageOrientation 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209715/

相关文章:

objective-c - NStableview setDatasource EXC_BAD_ACCESS

ios - 将自定义对象存储为 NSDictionary 与 NSData

ios - iPhone 3GS iOS 5 支持( Nib 到 Storyboard)

iphone - 从错误的 url 加载 xml 时如何处理卡住程序?

ios - 播放下载的视频 MPMovieController

android - 智能手机主屏幕书签按钮

ios - SpriteKit - physicsBody 不尊重边缘

iphone - iOS 在蓝牙 session 中可以连接到 gamecenter 比赛的最大用户数是多少?

ios - 如何在 webview 完成加载之前一直显示启动画面。 objective-c

iphone - Xcode 如何将 UITableView Cells 链接到新的 View Controller