2014-04-23 4 views
0

J'utilise l'appareil photo pour prendre des photos dans une application IOS. Cela fonctionne, le seul problème que j'ai est quand j'essaie de comprendre comment l'utilisateur tenait l'appareil lors de la prise de la photo.UIImageOrientation/UIImagePickerController

Ce serait beaucoup mieux si je pouvais afficher les images d'une manière appropriée, pas à l'envers ou en rotation de 90 degrés.

Vous cherchez une solution me conduit au fait que je devrais utiliser le imageOrientation de UIImage mais en réalité:

theImage.imageOrientation is always equal to UIImageOrientationUp 

Qu'est-ce que je manque? J'ai fait diverses recherches et expériences mais rien ne change. Je ne montre plus de code à ce stade, pour la simple raison, je ne sais pas quelle partie montrer pour aider à trouver le problème.

Répondre

1

Depuis que j'étais capable de trouver une solution par moi-même. Je l'ai mis ici, au cas où cela pourrait être utile à quelqu'un d'autre.

En regardant la valeur du champ "imageOrientation" sur l'image enregistrée (comme je le faisais), en effet pour une raison quelconque apparaît toujours comme UIImageOrientationUp. D'autre part, en le regardant à l'intérieur de l'imagePickerController: didFinishPickingMediaWithInfo: est beaucoup plus significatif.

Après quelques recherches et essais, je me suis retrouvé avec une méthode ressemblant que:

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    …… 
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
    …… 

    if ((image.imageOrientation==UIImageOrientationLeft)|| 
     (image.imageOrientation==UIImageOrientationRight)|| 
     (image.imageOrientation==UIImageOrientationDown)) { 
     UIGraphicsBeginImageContext(image.size); 
     [image drawAtPoint:CGPointMake(0.0, 0.0)]; 
     image=UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 

    NSData *mediaData = UIImagePNGRepresentation(image); 
    …… 
} 

Et puis mon image montre bien orienté, quand je veux l'utiliser plus tard dans mon application.