Kraft UIImagePickerController, um nehmen Sie Foto im hochformat/Abmessungen iOS
Die nur erlaubt die Orientierung in der meine app-Landschaft. Ich habe Kraft dies in den Projekt-Eigenschaften unter Ziel - > sommerliche und erlauben nur portrait in shouldAutorotateToInterfaceOrientation
Das problem ist, wenn ich ein Foto machen, während halten Sie das Telefon horizontal (Querformat), wird das Foto aufgenommen im Querformat, während das UI bleibt im portrait-Modus.
Dies bedeutet, dass im landscape-Modus bekomme ich ein breites Bild von 3264 x 2448 statt des großen Bildes (2448 x 3264), habe ich im portrait-Modus.
Weiter kann der Benutzer das Bild zuschneiden, aber wenn die Aufnahme im landscape-Modus bekomme ich sehr hässlich gedehnt Bilder. Hinzufügen von Rahmen oder dem Wechsel der UI-Landschaft ist keine option.
Gibt es eine Möglichkeit zu zwingen, die UIImagePickerController
nehmen Sie ein Foto im hochformat Abmessungen obwohl das Telefon horizontal gehalten wird (Landschaft-Modus)?
Initialisiere ich die UIImagePickerController
mit den folgenden Einstellungen:
imagePicker =[[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
imagePicker.showsCameraControls = NO;
imagePicker.modalPresentationStyle = UIModalPresentationFullScreen;
imagePicker.wantsFullScreenLayout = YES;
imagePicker.cameraViewTransform = CGAffineTransformScale(imagePicker.cameraViewTransform,CAMERA_TRANSFORM, CAMERA_TRANSFORM);
imagePicker.navigationBarHidden = YES;
imagePicker.toolbarHidden = YES;
[self presentModalViewController:imagePicker animated:NO];
imagePicker.cameraOverlayView = self.cameraOverlay;
imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
- HI! Ich habe das gleiche problem. Welche der angebotenen Optionen die Antwort hast dein problem gelöst?
- Die stripExif hat den trick für mich an der Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Bildausrichtung flag gesetzt, auf das UIImage je nachdem, wie die Kamera gehalten wird, wenn das Bild aufgenommen wird. Dies ist ein read-only-flag und bestimmt die Ausrichtung, die iOS versucht, um das Bild anzuzeigen, wenn Sie es in einer Ansicht.
Könnten Sie überprüfen Sie die Ausrichtung, bevor Sie das Bild anzeigen, und Bearbeiten Sie die Bildansicht entsprechend. Vorausgesetzt, Sie haben eine Bildansicht im inneren eingeschlossen eine gleich große Ansicht...
Weitere option könnte sein, erstellen Sie ein neues Bild von ein imageRep: sollte dieser Streifen aus dem Informations-und Orientierungssystem.
update
Die native pixel-Dimensionen eines iPhone-Fotografie sind Landschaft, unabhängig der Art, wie das Telefon gehalten wird, wenn es genommen wird. Es ist nur der Orientierung
EXIFflag, die unterschiedlich eingestellt ist. Sie können nicht ändern, dasEXIFflag, aber Sie können entfernen Sie es, aus durch kopieren der image-bitmap-Daten in ein neues bitmap-Bild. Siehe auch meine Antworten hier.Hier ist ein Weg, um Streifen aus dem
EXIFDaten und fügen Sie in einem portraitEXIF- flag. Sie erstellen ein neues UIImage und Einstellung derEXIFflag, wie Sie es schaffen. Sie können diese Flagge Ihres Querformat-Bilder im hochformat (UIImageOrientationRight
).update 2
Es ist irreführend, beziehen sich auf die Bildausrichtung Eigenschaft von UIImage, da ein EXIF-flag, aus zwei Gründen:
(1) Bild-Metadaten gespeichert ist, im Wörterbuch-Stil-Struktur, innerhalb derer kann eine Reihe von sub-Wörterbücher, von denen EXIF. Andere sind TIFF, IPTC -, PNG zum Beispiel. Es gibt auch einen Allgemeinen Satz von tags auf die top-level-Wörterbuch. Die Orientierung Schlüssel ist NICHT im EXIF-Bereich, es findet sich in der TIFF -, EXIF-und IPTC subdictionaries (falls vorhanden) und auch als top-level-Taste. Wir verwenden eher den Begriff EXIF, wenn sich auf der Bild-Metadaten als ganzes, aber dies ist irreführend.
(2) Orientierung Metadaten in der Bilddatei verwendet einen anderen Satz von flag-Konventionen für diejenigen, die Apple verwendet in Ihren UIImage.Bildausrichtung Eigenschaft. Daher muss man aufpassen, wenn Lesen Sie diese Eigenschaft um zu zeigen das Bild korrekt an. Apple offenbar verwendet die Bild-Ausrichtung der Datei-Metadaten um die UIImage Eigentum, aber es ist ein bisschen der übersetzung geht.
Hier ist eine Seite zeigen 'exif' rotation flags. Vergleichen Sie mit Apple UIImage Dokumentation (Konstanten Abschnitt). Siehe auch Apple CGImageProperties_Reference, vor allem
kCGImagePropertyOrientation
Ich geladen habe ein kleines Projekt auf github Protokollierung verschiedene UIImage Metadaten-Probleme