web-dev-qa-db-ja.com

iOSでスクエアビューのカスタムカメラを作成する

IOSでカスタムカメラエクスペリエンスを作成しようとしていますが、次のコードスニペットは私が入手した範囲です。基本的に私は通常のカメラビューが必要です(つまり、キャプチャ、フラッシュ、グリッド、前面/背面、キャンセル)。しかし、通常のカメラと私のカメラの唯一の違いは、プレビューサーフェスに正方形が必要なことです。長方形ではありません。そして、表示されるのは、トリミングが不要なもの(WYSIWYG)です。ユーザーが最初に正方形の写真を撮ったので。

ライブラリも調べています https://github.com/danielebogo/DBCamera ですが、自分の目的に合わせてカスタマイズする方法がわかりません。何か助けはありますか?ありがとう。

私のコードSO遠い:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //Capture Session
    AVCaptureSession *session = [[AVCaptureSession alloc]init];
    session.sessionPreset = AVCaptureSessionPresetPhoto;

    //Add device
    AVCaptureDevice *device =
    [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    //Input
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];

    if (!input)
    {
        NSLog(@"No Input");
    }

    [session addInput:input];

    //Output
    AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
    [session addOutput:output];
    output.videoSettings =
    @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };

    //Preview Layer
    AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    UIView *myView = self.view;
    previewLayer.frame = myView.bounds;
    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    [self.view.layer addSublayer:previewLayer];

    //Start capture session
    [session startRunning];
}

これは、Xcodeのシングルビュープロジェクトにある唯一のカスタムコードです。

9
Katedral Pillon

UIImagePickerControllerに固執してカスタマイズするか、AVFoundationを使用して独自に作成するかの、2つのオプションがあります。

UIImagePickerControllerはかなりのカスタマイズオプションを提供し、この同様のスレッドにはそれに関するいくつかの良い情報があります: link

それでも自分で作成したい場合は、Appleドキュメントにアクセスして、AVCamlink というこのデモプロジェクトを確認することをお勧めします。ただし、 、おそらく必要とされるよりもはるかに詳細なので、このビデオチュートリアルもお勧めします: リンク

最後のオプションを選択する場合は、「実際のカメラ」をpreviewLayerのフレームに合わせるために、videoGravityAVCaptureVideoPreviewLayerを設定できることをお伝えしておきます。 AVLayerVideoGravityResizeAspectFillへ。

10
Aleksander

カスタムカメラを使用するのは少し面倒ですが、アプリのエクスペリエンスを実際にカスタマイズできることを考えると、利益が得られます。

これを行う最も簡単な方法は、 TGCameraViewController を使用することです。

このTGCameraViewControllerを使用して、カメラビュー全体を編集できます。また、次の機能を提供します。-

  • アルバムに簡単にアクセスする方法(カメラロール)
  • フラッシュオート、オフとオン
  • フォーカス
  • フロントカメラとバックカメラ

また、 AVCamManual:手動キャプチャを使用するためのAVCamの拡張 ドキュメントを参照して、独自のカスタムカメラを作成することもできます。

0
Meet Doshi