Я разрабатываю приложение iPhone, в котором я должен использовать AVCaptureSession для захвата изображения с задней камеры. Каждый раз, когда приложение запускается, оно получает 2 значения от сервера, первым значением является свойство sessionCresureSession, а второе - GCRect для отсечения выходного изображения (координата этого прямоугольника соответствует разрешению выходного изображения).Получите разрешение выходного изображения перед захватом изображений с помощью AVCaptureSession
Теперь проблема заключается в том, что я должен «нарисовать» этот обрезающий прямоугольник на предварительном просмотре камеры, что означает, что мне придется сопоставить координату отсекающего прямоугольника с другой «правильной» координатой предварительного просмотра камеры (поскольку sessionPreset меняется каждый раз, когда приложение запускается). Я искал документацию Apple, но я не мог найти способ получить разрешение выходного изображения. Мне нужно это разрешение вывода, чтобы сделать отображение обрезающего прямоугольника.
Это код, где я начинаю AVCaptureSession в мой контроллер зрения:
- (void)viewDidLoad
{
[super viewDidLoad];
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = _sessionPreset; //this _sessionPreset varies each time my app starts
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Output
AVCaptureStillImageOutput *output = [[AVCaptureStillImageOutput alloc] init];
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil];
[output setOutputSettings:outputSettings];
[session addOutput:output];
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
UIView *myView = self.view;
previewLayer.frame = myView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspect;
[self.view.layer addSublayer:previewLayer];
//Start capture session
[session startRunning];
//Now I want to draw the rectangle after the session starts
}
Заранее спасибо ребята :)