1

UIImageAVCaptureSessionから受信し、UIImageViewに設定しています。ポートレートモードでは画像が正しい方向に設定されますが、風景モードを使用すると画像は時計回りに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

+0

上記の私のローテーションコードを追加しました。 Plistはうまく見えます - すべての向きがサポートされています。すべて私には普通のようです。 – Vad

+0

私はちょうど追跡した:デバイスの向きは常に正しいです。 AVCaptureSessionで画像を撮影すると何らかの理由で常に画像の向きが3になります – Vad

答えて

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

そして、すべての画像がどの向きで正しく動作。

関連する問題