2011-02-03 134 views
8

我从iPhone/iPad库中加载照片,其中大多数都处于肖像模式,我想知道如何以横向或纵向模式检查照片?如何知道横向或纵向模式下的照片?

+0

做的傻瓜的证明呢?您可以通过Viren的答案获得当前的设备定位。否则,比较照片的高度和宽度以得到其纵横比。但是没有办法知道实际的方向。 – jakev 2011-02-03 00:32:36

回答

12

使用UIImage实例的imageOrientation属性。它会返回你的常量之一these

实施例:

的UIImage *图像= //从库加载

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

这帮助我开始了专辑的选择,并且我想为照片添加一些补充信息,但我没有意识到它们是两个完全不同的东西!当用户使用iPhone的相机拍摄快照时,图像不是直立的,而是实际上逆时针旋转90度。所以,如果你想最终在'NSLog'的'if'块中(@“portrait”);`那么你会测试'UIImageOrientationLeft || UIImageOrientationRight || UIImageOrientationLeftMirrored || UIImageOrientationRightMirrored`和其余的将是`风景` – pulkitsinghal 2012-12-09 15:51:49

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 ..."); 

    } 
} 
相关问题