1

Ich erhalte meine UIImage von AVCaptureSession und setze sie in UIImageView. Der Hochformat-Modus setzt Bilder mit der korrekten Ausrichtung, aber sobald ich den Querformat-Modus verwende, werden die Bilder um 90 Grad im Uhrzeigersinn gedreht.UIImageOrientation verwenden, um UIImagnetisch im Querformat zu speichern

Ich habe eine wenig Forschung und entdecken, dass ich UIImageOrientation mit dieser Methode verwenden kann mein Problem zu beheben:

[UIImage imageWithCGImage:cgimageref scale:1 orientation:orientation] 

Aber ich verstehe nicht, wie. Wenn ich für alle Bilder UIImageOrientation betrachte, ist der Wert immer 3 (NSLog(@"%d",UIImageOrientation)) im Hoch- und Querformat. Ich bin verwirrt darüber, wie mir das helfen kann. Fehle ich etwas?

Hier ist die Orientierung Code:

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
    self.prevLayer.frame = self.view.bounds; 
    self.prevLayer.orientation = [[UIDevice currentDevice] orientation]; 
} 

ShouldAutorotateToInterfaceOrientation JA zurückgibt.

+0

Geben Sie Ihren Rotationscode ein. Höchstwahrscheinlich umgehen Sie oder verhindern, dass der Standard-Rotationscode irgendwie ausgeführt wird. Obwohl Ihre Ansicht als Landschaft zu sehen ist, wird sie möglicherweise immer noch im Hochformat gerendert. Überprüfen Sie auch Ihre Info.plist und stellen Sie sicher, dass Ihre Liste der zulässigen Rotationen korrekt ist. – Sam

+0

Ich habe oben meinen Rotationscode hinzugefügt. Plist sieht gut aus - alle Orientierungen werden unterstützt. Alles sieht normal für mich aus. – Vad

+0

Ich habe nur verfolgt: Ausrichtung des Geräts ist immer korrekt. Es ist die Bildausrichtung, die aus irgendeinem Grund immer 3 ist, wenn ein Bild mit AVCaptureSession aufgenommen wird – Vad

Antwort

4

Die Lösung dauerte einige Zeit zu finden. Ich hatte

AVCaptureConnection *videoConnection = nil; 
for (AVCaptureConnection *connection in stillImageOutput.connections){ 
    for (AVCaptureInputPort *port in [connection inputPorts]){ 
     if ([[port mediaType] isEqual:AVMediaTypeVideo]){ 
      videoConnection = connection; 
      break; 
     } 
    } 
    if (videoConnection) { break; } 
} 

Diese Linie unter Ausrichtung auf AVCaptureConnection hinzuzufügen, ist das Update:

if([videoConnection isVideoOrientationSupported]) { 
    [videoConnection setVideoOrientation:[[UIDevice currentDevice] orientation]]; 
} 

Und alle Bilder arbeiten direkt mit jeder Ausrichtung.

Verwandte Themen