Предварительный просмотр задней камеры iOS 5 в полноэкранном режиме - PullRequest
1 голос
/ 23 декабря 2011

просто интересно, возможно ли это:

Я искал различные решения для отображения предварительного просмотра камеры; и хотя делать это в полноэкранном режиме относительно просто, я бы хотел, чтобы он масштабировался до 50% экрана и отображался рядом с графикой (не с наложением, а с отдельной графикой). слева от предварительного просмотра камеры, который занимает равное пространство). В основном цель состоит в том, чтобы позволить пользователю сравнивать предварительный просмотр камеры с графикой.

Итак, что мне нужно знать, это: а) можно ли масштабировать предварительный просмотр камеры до более низкого разрешения б) может ли он разделить экран на iPad с другой графикой, которая не является наложением c) если a и b верны, есть ли пример источника, на который я мог бы указать, пожалуйста?

Спасибо!

1 Ответ

0 голосов
/ 23 декабря 2011

Вы можете просто использовать следующий код:

previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession];
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
previewLayer.opaque = YES;
previewLayer.contentsScale = self.view.contentScaleFactor;
previewLayer.frame = self.view.bounds;
previewLayer.needsDisplayOnBoundsChange = YES;
[self.view.layer addSublayer:previewLayer];

Просто замените строку 5, чтобы установить слой предварительного просмотра другой кадр.Вы можете создать captureSession с помощью этого кода

captureSession = [[AVCaptureSession alloc] init];

if(!captureSession)
{
    NSLog(@"Failed to create video capture session");
    return NO;
}

[captureSession beginConfiguration];

captureSession.sessionPreset = AVCaptureSessionPreset640x480;

AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
videoDevice.position = AVCaptureDevicePositionFront;

if(!videoDevice)
{
    NSLog(@"Couldn't create video capture device");
    [captureSession release];
    captureSession = nil;
    return NO;
}

if([videoDevice isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus])
{
    NSError *deviceError = nil;

    if([videoDevice lockForConfiguration:&deviceError])
    {
        [videoDevice setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
        [videoDevice unlockForConfiguration];
    }
    else
    {
        NSLog(@"Couldn't lock device for configuration");
    }
}

NSError *error;
AVCaptureDeviceInput *videoIn = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];

if(!videoIn)
{
    NSLog(@"Couldn't create video capture device input: %@ - %@", [error localizedDescription], [error localizedFailureReason]);
    [captureSession release];
    captureSession = nil;
    return NO;
}

if(![captureSession canAddInput:videoIn])
{
    NSLog(@"Couldn't add video capture device input");
    [captureSession release];
    captureSession = nil;
    return NO;
}

[captureSession addInput:videoIn];
[captureSession commitConfiguration];
...