1

我從AVCaptureSession接收我的UIImage,並將它們設置爲UIImageView's。縱向模式以正確的方向設置圖像,但一旦使用橫向模式,圖像將順時針旋轉90度。使用UIImageOrientation在景觀模式下正確保存UIImage

我做了一些研究,發現,我可以用UIImageOrientation用此方法來解決我的問題:

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

但我不知道如何。如果我在所有圖像上查看UIImageOrientation,縱向和橫向模式下的值始終爲3(NSLog(@"%d",UIImageOrientation))。我對這能如何幫助我感到困惑。我錯過了什麼嗎?

這裏是定向代碼:

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

shouldAutorotateToInterfaceOrientation返回YES。

+0

發佈您的輪換代碼。您很可能會繞過或阻止以某種方式執行默認輪換代碼。因此,即使您的視圖看起來是風景,它仍然可能是以縱向渲染。同時仔細檢查您的Info.plist並確保您允許的旋轉列表是準確的。 – Sam 2012-03-28 18:33:39

+0

我在上面添加了我的輪換代碼。 Plist看起來很好 - 所有的方向都受到支持。一切看起來都很正常。 – Vad 2012-03-29 02:14:27

+0

我剛剛追蹤到:設備的方向始終是正確的。由於某些原因,使用AVCaptureSession拍攝照片時,圖像方向始終爲3 – Vad 2012-03-29 03:27:05

回答

4

該解決方案需要一些時間才能找到。我不得不方向增加AVCaptureConnection

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; } 
} 

下面這行是修復:

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

,所有圖像與任何方向的工作權利。

相關問題