我正在开发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中显示它没有问题。
感谢。
答案 0 :(得分:1)
图像方向不表示图像是纵向还是横向格式。
方向指定图像数据在显示之前如何有效地转换/旋转。通常,例如,无论当时相机的方向如何,由相机拍摄的图像的数据格式都是相同的。也就是说,以肖像形式拍摄的图像可以以“原始”形式显示为旋转的风景图像(当然,这取决于相机)。
为了克服这一点,使用关于拍摄图像时相机方向的信息更新图像元数据。有了这些信息,UIUmage可以通过根据元数据旋转图像,以正确的方式显示图像。
如果您需要查看图像是纵向或横向的最终格式,只需将宽度与高度进行比较:)
添