我正在 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/