如何知道照片是横拍还是竖拍?

8

我从iPhone/iPad图库加载照片,其中大多数是竖向模式,我想知道如何检查照片是横向还是竖向模式?


你想知道设备的方向还是照片的方向?你可以通过Viren的答案获取当前设备的方向。否则,比较照片的高度和宽度以获取其纵横比。但是无法知道实际方向。 - jakev
2个回答

12
使用UIImage实例的imageOrientation属性。它将返回以下常量之一。

示例:

UIImage *image = // 从库中加载

if (image.imageOrientation == UIImageOrientationUp) {
    NSLog(@"portrait");
} else if (image.imageOrientation == UIImageOrientationLeft || image.imageOrientation == UIImageOrientationRight) {
    NSLog(@"landscape");
}

2
这帮助我开始选择相册,我想添加一些有关拍照的补充信息,我没有意识到这是两件完全不同的事情!当用户使用iPhone相机拍摄快照时,图像不是直立的,而是逆时针旋转90度。因此,如果您想要进入“if”块以进行“NSLog(@”portrait“);”的操作,则应测试“UIImageOrientationLeft || UIImageOrientationRight || UIImageOrientationLeftMirrored || UIImageOrientationRightMirrored”,其余部分将是“landscape”。 - pulkitsinghal

1
我在iPhone 4上运行iOS 5.0系统的数十张实际图片上测试了这段代码,并成功将它们全部转换为纵向模式。以下是修复/检查的方法:
if (image.imageOrientation == UIImageOrientationUp ||
        image.imageOrientation == UIImageOrientationDown )
    {
        NSLog(@"Image is in Landscape Fix it to portrait ....");

        backgroundView.frame = self.view.bounds;
        backgroundView.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
        backgroundView.contentMode = UIViewContentModeScaleAspectFill;
    }
    else
    {
        NSLog(@"Image is in Portrait everything is fine ...");
    }

这里有一个绝对可靠的方法来进行此检查

-(void)imagePickerController:(UIImagePickerController *)picker
      didFinishPickingImage : (UIImage *)image
                 editingInfo:(NSDictionary *)editingInfo
{

    // Get the data for the image
    NSData* imageData = UIImageJPEGRepresentation(image, 1.0);




    if ([UIImage imageWithData:imageData].size.width >  [UIImage imageWithData:imageData].size.height)
    {
        NSLog(@"Select Image is in Landscape Mode ....");

    }
    else
    {
        NSLog(@"Select Image is in Portrait Mode ...");

    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接