2011-02-03 27 views
8

Cardo foto desde la biblioteca de iPhone/iPad, la mayoría de ellos en modo vertical, quiero saber ¿Cómo puedo verificar la foto en modo horizontal o vertical?¿Cómo saber si la foto está en modo horizontal o vertical?

+0

qué quiere conocer la orientación del dispositivo o de la foto? Puede obtener la orientación actual del dispositivo con la respuesta de Viren. De lo contrario, compare la altura y el ancho de la foto con su relación de aspecto. Pero no habría forma de conocer la orientación real. – jakev

Respuesta

12

Utilice la propiedad imageOrientation de UIImage instancias. Le devolverá una de las constantes these.

Ejemplo:

UIImage * image = // carga desde biblioteca

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

Esto me ayudó a comenzar con la selección de álbumes y quiero agregar algo de información complementaria para tomar fotografías, ¡de lo cual no me di cuenta de que eran 2 cosas totalmente diferentes! Cuando un usuario toma una instantánea con la cámara del iPhone, la imagen no está en posición vertical, sino que de hecho gira 90 grados en el sentido contrario a las agujas del reloj. Entonces, si quisieras terminar en el bloque 'if' para 'NSLog (@' portrait ');' entonces probarías 'UIImageOrientationLeft || UIImageOrientationRight || UIImageOrientationLeftMirrored || UIImageOrientationRightMirrored' y el resto será 'landscape' – pulkitsinghal

1

Probé este pedazo de código en decenas de imagen real en el iPhone 4 con iOS 5.0 y era capaz de hacer con éxito todo en modo retrato. Esta es la forma de solucionar/comprueba

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

Aquí está una manera a toda prueba de hacer esta comprobación

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

    } 
} 
Cuestiones relacionadas