2017-12-04 31 views
0

私が間違っていることがわからない、簡単なカスタムカメラを作成したい、AVCaptureShotoOutputをAVCaptureSessionにアタッチして作成し、AVCapturePhotoSettingsを最小設定で作成して写真を撮る以下のコード。AVCapturePhotoSettingsが受け入れられないNSDictionary要素を受け入れる

例外が発生します。kCVPixelBufferPixelFormatTypeKeyは定義されていませんが、実際には渡しているNSDictionaryにあります。私はここにいくつかの光を必要とする

、感謝

public void TakePicture() 
    { 
     var output = new AVCapturePhotoOutput(); 
     _captureSession.AddOutput(output); 
     var settings = AVCapturePhotoSettings.Create(); 
     var previewPixelType = settings.AvailablePreviewPhotoPixelFormatTypes.First(); 

     var keys = new[] 
     { 
      new NSString("kCVPixelBufferPixelFormatTypeKey"), 
      new NSString("kCVPixelBufferWidthKey"), 
      new NSString("kCVPixelBufferHeightKey"), 
     }; 

     var objects = new NSObject[] 
     { 
      // don't have to be strings... can be any NSObject. 
      previewPixelType, 
      new NSString("160"), 
      new NSString("160") 
     }; 

     var dicionary = new NSDictionary<NSString, NSObject>(keys, objects); 
     settings.PreviewPhotoFormat = dicionary; 
     output.CapturePhoto(settings,this); 
    } 
+0

私はこの問題を次のように解決しました:settings.PreviewPhotoFormat = new NSDictionary (CVPixelBuffer.PixelFormatTypeKey、settings.AvailablePreviewPhotoPixelFormatTypes [0]);最初の試みがうまくいかなかった理由がわからない – RollRoll

答えて

0

kCVPixelBufferPixelFormatTypeKeyはXamarinでは使用できないので、それはあります。

ここではCVPixelBuffer.PixelFormatTypeKeyを使用してください。コンパイル時に自動的にkCVPixelBufferPixelFormatTypeKeyに変換されます。

kCVPixelBufferWidthKeyおよびkCVPixelBufferHeightKeyと同じ理由で、apiは、Xamarin.iOSにおいてCVPixelBuffer.WidthKeyおよびCVPixelBuffer.HeightKeyである。