Répondre

-4

Non, UIImagePickerController ne peut pas le faire explicitement.

Si vous souhaitez déterminer en fonction du contenu de l'image. C'est un genre de problème difficile. Comment pouvez-vous déterminer l'orientation d'une image sans en comprendre le contenu?

Je peux vous suggérer une astuce que vous examiner la largeur et la longueur de l'image retournée et voir si elle est portrait ou paysage. Pour faire tourner l'image, il y a quelques bibliothèques et codes à l'extérieur mais je ne les ai pas beaucoup essayé. Vous pouvez jeter un coup d'œil à this blog

+0

Merci pour le lien. Comment pourrais-je obtenir la hauteur et la largeur de l'image? – Bryan

+0

Après avoir lu votre lien, je ne pourrais pas avoir besoin de l'orientation parce que les méthodes de redimensionnement sur le prévu dans le lien conservera les informations d'orientation et un UIImageView peut compenser l'orientation automatiquement. – Bryan

+1

vous pouvez déterminer l'orientation en utilisant exif méta données –

14

La réponse de Vodkhang est partiellement incorrecte - les caméras modernes placent une orientation explicite dans l'image lorsqu'elles prennent la photo. Cela a été commun pour environ 5+ ans maintenant.

Je l'ai déjà utilisé le code dans cette réponse à faire la rotation en lisant l'info "d'orientation" en direct de l'image:

UIImagePickerController camera preview is portrait in landscape app

+1

merci! Cela devrait être la bonne réponse :) –

2
// Use this UIImagePickerController's delegate method 
    - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info { 
     // Getting image user just has shoot 
     UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

     // Fixing to stick with only one orientation (UIImageOrientationUp in this case) 
     switch (image.imageOrientation) { 
      case UIImageOrientationDown: 
      case UIImageOrientationDownMirrored: 
      case UIImageOrientationLeft: 
      case UIImageOrientationLeftMirrored: 
      case UIImageOrientationRight: 
      case UIImageOrientationRightMirrored: 
       image = [UIImage imageWithCGImage:image.CGImage 
                scale:image.scale 
              orientation:UIImageOrientationUp]; // change this if you need another orientation 
       break; 
      case UIImageOrientationUp: 
      case UIImageOrientationUpMirrored: 
       // The image is already in correct orientation 
       break; 
     } 

     // Do whatever you want with image (likely pass it to some UIImageView to display) 
     UIImageView *imgView = [[UIImageView alloc] initWithImage:image]; 

     // Dismiss UIImagePickerController 
     [picker dismissModalViewControllerAnimated:NO]; 
    } 

Note: UIImageView lit la propriété imageOrientation et affiche UIImage en conséquence.

+0

Mon application est iPad, paysage uniquement, iOS 8/9. Il y a beaucoup de questions iOS 7 sur l'activation de paysage sur 'UIImagePickerController' (qui pour moi fonctionnait hors de la boîte), mais personne n'a abordé pourquoi les photos que je prends sur ** paysage juste ** afficher à l'envers sur un UIImageView, alors que ceux que je prends ** paysage gauche ** ne le font pas. Merci pour votre réponse. –