Захваченный 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];
}
}];
}
если у кого-то есть идеи, которые будут высоко оценены.