2011-02-03 11 views
8

Załaduję zdjęcie z biblioteki iPhone/iPad, większość z nich w trybie Portret, chcę wiedzieć Jak mogę sprawdzić zdjęcie w trybie Krajobraz lub Portret?Jak sprawdzić, czy zdjęcie w trybie Krajobraz lub Portret?

+0

Chcesz wiedzieć orientację urządzenia lub zdjęcia? Możesz uzyskać bieżącą orientację urządzenia za pomocą odpowiedzi Virena. W przeciwnym razie porównaj wysokość i szerokość zdjęcia, aby uzyskać jego współczynnik proporcji. Ale nie byłoby sposobu, aby poznać faktyczną orientację. – jakev

Odpowiedz

12

Użyj właściwości imageOrientation instancji UIImage. Zwróci ci jedną ze stałych these.

Przykład:

UIImage * image = // ładowane z biblioteki

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

Pomogło mi to w rozpoczęciu wyboru albumu i chcę dodać dodatkowe informacje do robienia zdjęć, których nie zdawałem sobie sprawy z 2 całkowicie różnych rzeczy! Gdy użytkownik robi migawkę z kamerą iPhone'a, obraz nie jest pionowy, ale w rzeczywistości obraca się o 90 stopni przeciwnie do ruchu wskazówek zegara. Więc jeśli chciałbyś skończyć w bloku 'if' dla' NSLog (@ "portrait"); 'to byś przetestował dla' UIImageOrientationLeft || UIImageOrientationRight || UIImageOrientationLeftMirrored || UIImageOrientationRightMirrored', a reszta będzie "landscape" – pulkitsinghal

1

Przetestowałem ten fragment kodu na dziesiątki rzeczywistego obrazu na iPhone 4 z systemem iOS 5.0 i był w stanie skutecznie uczynić je wszystko w trybie portretu. W ten sposób można naprawić/sprawdzić

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

Oto dowód głupi sposób prowadzenia tej kontroli

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

    } 
} 
Powiązane problemy