Warum stellt -writeImageToSavedPhotosAlbum mein Bild falsch?

8

Ich verwende -writeImageToSavedPhotosAlbum , um Bilder an die Fotobibliothek zu senden. Das Problem, das ich habe, ist, dass trotz der Angabe einer Orientierung, die Bilder mit den falschen Orientierungen enden.

Tatsächlich scheint es, dass diejenigen, die auf AVCaptureVideoOrientationPortrait ausgerichtet sind, wie AVCaptureVideoOrientationPortraitUpsideDown aussehen. und AVCaptureVideoOrientationLandscapeLeft sehen wie AVCaptureVideoOrientationLandscapeRight aus und umgekehrt.

Gibt es einen Grund, warum das passiert? Hier sind einige weitere Details:

Ich habe keinen ViewController, der die automatische Ausrichtung für meine Ansicht ändert.
Alle Bilder zeigen [image imageOrientation] gleich AVCaptureVideoOrientationPortrait , aber ich verfolge die tatsächliche Ausrichtung und übergebe diese unabhängig voneinander an -writeImageToSavedPhotosAlbum .

Ich verwende: -writeImageToSavedPhotosAlbum:orientation:completionBlock:

Ich würde es begrüßen, wenn jemand etwas Licht darauf werfen könnte.

UPDATE:

Trotz was ich in der Dokumentation gelesen habe,

  

Wenn Sie ein UIImage-Objekt speichern möchten, können Sie die UIImage-Methode verwenden   CGImage, um einen CGImageRef zu erhalten und die imageOrientation des Bildes auf   ALAssetOrientation.

Ich ging voran und änderte meine Orientierung:

%Vor%

Nun werden alle Bilder mit ihrer linken Kante nach unten ausgerichtet, als ob sie landschaftsrichtig wären. Ich habe es immer noch nicht richtig, aber zumindest habe ich sie einheitlich ausgerichtet.

Ein weiteres UPDATE:

Das funktioniert. Warum, ich weiß es nicht:

%Vor%     
mahboudz 31.10.2011, 21:52
quelle

2 Antworten

1

Sie haben dieses Problem, weil UIDeviceOrientation und ALAssetOrientation unterschiedliche Aufzählungswerte haben. Überprüfen Sie die Definition für beide enum unten:

%Vor%

Also für UIDeviceOrientationUnknown das gleiche wird UIDeviceOrientationUnknown (int Wert 0); für das UIDeviceOrientationPortrait ist gleich ALAssetOrientationDown (int Wert 1) und so weiter

    
Vitaliy Gozhenko 09.12.2014, 21:17
quelle
0

Sind Sie sicher, dass das Bild nicht mit der richtigen Ausrichtung gespeichert wird und Sie die Ausrichtung bei der Anzeige nicht beachten?

Sie könnten das Asset in den Completion-Block laden und dort die Ausrichtung überprüfen.

    
Tony 15.12.2011 21:36
quelle

Tags und Links