Захваченный AV размер изображения экрана

Я использую AVCapture для создания собственной камеры на iOS. Когда я нажимаю кнопку, чтобы сделать фотографию. Я захватил изображение из слоя предварительного просмотра. Затем я назначаю захваченное изображение изображению, которое я делаю по размеру экрана, и помещаю его поверх слоя предварительного просмотра. Проблема заключается в том, что захваченное изображение имеет разные пропорции по сравнению с предварительным просмотром видеокамеры ios, поэтому, когда вы нажимаете, чтобы сделать снимок... Вы можете увидеть аспект изменения фото. Я хочу, чтобы фотография выглядела как превью. Я думаю, что на это можно посмотреть так, как будто видео остановилось. Поэтому размеры снятого изображения должны быть идентичны пропорционально предварительному просмотру.

Вот я создаю сеанс avcapture:

    NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
    UIImage *image = [UIImage imageWithData:imageData];

    UIImageView *photoTaken = [[UIImageView alloc] initWithFrame:self.view.frame];
    photoTaken.image = image;
    photoTaken.contentMode = UIViewContentModeScaleAspectFit;

    self.takenPhoto = photoTaken;

    [self.view.layer insertSublayer:self.takenPhoto.layer atIndex:1];

    self.takenPhoto.layer.name = @"imageLayer";

    [self imageTaken];

и затем я захватил изображение по нажатию кнопки:

- (void)takePhoto:(id)sender {

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

    [stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
        if (imageDataSampleBuffer) {
            NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
            UIImage *image = [UIImage imageWithData:imageData];

            UIImageView *photoTaken = [[UIImageView alloc] initWithFrame:self.view.frame];
            photoTaken.image = image;
            photoTaken.contentMode = UIViewContentModeScaleAspectFit;

            self.takenPhoto = photoTaken;

            [self.view.layer insertSublayer:self.takenPhoto.layer atIndex:1];

            self.takenPhoto.layer.name = @"imageLayer";

            [self imageTaken];

        }
    }];
}

если у кого-то есть идеи, которые будут высоко оценены.

0 ответов

Другие вопросы по тегам