0

我正在尝试构建自定义相机应用程序。

任务:

  1. 显示实时图像预览。
  2. 允许您点击屏幕上的任意位置以捕获图像。
  3. 在实时图像预览上方显示生成的图像。

目前,除任务 1 外,一切正常。包含我的实时图像预览的视图保持其背景颜色(或在未选择背景颜色时保持透明),即使相机可操作并且在点击屏幕时显示图像也是如此。有任何想法吗?我已经提到了这个先前的讨论,我想我已经涵盖了我所有的基础:AVFoundation camera preview layer not working

我错过了什么?

-(void)viewWillAppear:(BOOL)animated{
    session = [[AVCaptureSession alloc] init];
    [session setSessionPreset:AVCaptureSessionPresetPhoto];

    AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    NSError *error;
    AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];

    if ([session canAddInput:deviceInput]) {
        [session addInput:deviceInput];
    }
    AVCaptureVideoPreviewLayer *previewlayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    [previewlayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

    CALayer *rootLayer = [[self view] layer];
    [rootLayer setMasksToBounds:YES];
    CGRect frame = self.frameforCapture.frame;

    [previewlayer setFrame:frame];

    [rootLayer insertSublayer:previewlayer atIndex:0];

    stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
    NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG, AVVideoCodecKey, nil];
    [stillImageOutput setOutputSettings:outputSettings];

    [session addOutput:stillImageOutput];

    [session startRunning];
    //....
}
4

0 回答 0