2009-05-25 6 views
1

Ich erhalte inkonsistente Ergebnisse, je nachdem, ob ich das Bild direkt von der Kamera im Rückruf erhalte oder es aus der Kamerarolle wähle.Erkennung der Ausrichtung der iPhone-Kamera

In der UIImagePickerControllerDelegate Callback-Methode, die UIImage.imageOrientation kommt als UIImageOrientationRight egal, wie das Foto gemacht wird.

Wenn Sie es von der Kamerarolle lesen, erscheint eine Landschaftsaufnahme (nach links gedreht) UIImageOrientationUp, während eine Porträtaufnahme erscheint UIImageOrientationRight.

Wie kann ich die Kameraausrichtung in beiden Situationen zuverlässig erreichen?

+0

ich diesen etwas verwandten Link gefunden http://mohrt.blogspot.com/2009/05/camera-image-orientation.html und bin mir des ScaleAndRotateImage-Codes http://blog.logichigh.com/2008/06/05/uiimage-fix/ ... bewusst, aber keiner erklärt, warum ich falsche imageOrientation-Informationen direkt von dem übertragenen Bild erhalten könnte aus dem Rückruf. –

+0

Ich habe das gleiche Problem. Zum Beispiel ist imageOrientation 3 (UIImageOrientationRight, 90 deg CW, nach Apple Docs) wenn ich das iPhone in der aufrechten Position habe und es ist 0 (UIImageOrientationUp) wenn es nach links gedreht wird (sollte UIImageOrientationRight sein, glaube ich). Hast du irgendeine Lösung gefunden? – Brenden

+0

Ich habe keine Lösung gefunden, aber ich habe versucht, dies zu überprüfen. –

Antwort

3

ich dieses Forum Apple veröffentlicht und bekam die Erklärung:

„Die Kamera ist eigentlich landschaftsnativ, also stehst du auf, wenn du ein Bild im Querformat machst und links oder rechts, wenn du ein Bild im Hochformat machst (abhängig davon, wie du das Gerät hältst). "

See:

https://devforums.apple.com/message/301160#301160 

Danke:

https://devforums.apple.com/people/Rincewind

-1

Ich habe somewhere, dass die UIImagePickerController schaltet sich nicht ein Hören auf Hardware Orientierungsveranstaltungen, so müssen Sie möglicherweise

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

aufrufen, bevor Sie Bilder in Ihrem eigenen App erfassen. Ich werde es selbst ausprobieren, also hoffe ich, dass es funktioniert!

+0

Eigentlich ist die von Ihnen verwendete Syntax: [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; –

+0

danke - jetzt behoben –

+0

Das hat mir nicht geholfen. –

0

Ich habe versucht, die ImageOrientation-Eigenschaft, nachdem das Bild aufgenommen wurde, es ist lustig, weil ich die Orientierungswerte vermasselt habe. Oben ist Links, Unten ist Rechts, Links ist Unten und Rechts ist Oben, zum Beispiel, wenn ich das iPhone "Oben" halte (die normale Position), dann ist imageOrientation "UIImageOrientationRight".

- (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingImage:(UIImage *)image 
     editingInfo:(NSDictionary *)editingInfo { 
    switch (image.imageOrientation) { 
     case UIImageOrientationUp: //Left 
     break; 
     case UIImageOrientationDown: //Right 
     break; 
     case UIImageOrientationLeft: //Down 
     break; 
     case UIImageOrientationRight: //Up 
     break; 
     default: 
     break; 
    } 
} 

Aktuell Ich bin mit 4.1 SDK GM (xcode_3.2.4_and_ios_sdk_4.1_gm_seed) für iOS Targeting 3.1

+1

Hattest du nur Spaß daran, diese Konvertierung zu hacken? –