UIImage imageOrientation返回0

时间:2011-11-21 09:31:27

标签: 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中显示它没有问题。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

为了克服这一点,使用关于拍摄图像时相机方向的信息更新图像元数据。有了这些信息,UIUmage可以通过根据元数据旋转图像,以正确的方式显示图像。

如果您需要查看图像是纵向或横向的最终格式,只需将宽度与高度进行比较:)