2011-02-03 17 views
8

Carico foto dalla libreria di iPhone/iPad, la maggior parte in modalità Ritratto, desidero sapere Come posso controllare la foto in modalità Orizzontale o Verticale?Come sapere se la foto è in modalità orizzontale o verticale?

+0

Vuoi conoscere l'orientamento del dispositivo o della foto? È possibile ottenere l'orientamento corrente del dispositivo con la risposta di Viren. Altrimenti, confronta l'altezza e la larghezza della foto per ottenere le proporzioni. Ma non ci sarebbe modo di conoscere l'orientamento reale. – jakev

risposta

12

Utilizzare la proprietà imageOrientation delle istanze UIImage. Ti restituirà una delle costanti these.

Esempio:

UIImage * image = // caricata dalla libreria

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

Questo mi ha aiutato a iniziare con la selezione dell'album e voglio aggiungere alcune informazioni supplementari per l'acquisizione di foto, che non avevo realizzato erano 2 cose completamente diverse! Quando un utente scatta un'istantanea con la fotocamera dell'iPhone, l'immagine non è verticale ma viene effettivamente ruotata di 90 gradi in senso antiorario. Quindi se volessi finire nel blocco 'if' per' NSLog (@ "portrait"); 'allora testare per' UIImageOrientationLeft || UIImageOrientationRight || UIImageOrientationLeftMirrored || UIImageOrientationRightMirrored' e il resto sarà 'landscape' – pulkitsinghal

1

Ho provato questo pezzo di codice su decine di immagine reale su iPhone 4 con iOS 5.0 e sono riuscito a farli con successo tutto in modalità verticale. Questo è il modo di correggere/controllare

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

Ecco un modo infallibile di fare questo controllo

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

    } 
} 
Problemi correlati