AVCaptureSession
プリセットPhotoPresetを設定しました
self.session.sessionPreset = AVCaptureSessionPresetPhoto;
次に、ビューに新しいレイヤーを追加します
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.session];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
CALayer *rootLayer = [self.view layer];
[rootLayer setMasksToBounds:YES];
[previewLayer setFrame:[rootLayer bounds]];
[rootLayer addSublayer:previewLayer];
これまでのところ良いですが、画像をキャプチャしたいときは、以下のコードを使用します
AVCaptureConnection *videoConnection = [self.stillImageOutput connectionWithMediaType:AVMediaTypeVideo];
[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error)
{
[self.session stopRunning];
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData ];
self.imageView.image = image; //IMAGEVIEW IS WITH THE BOUNDS OF SELF.VIEW
image = nil;
}];
画像をキャプチャすることは問題ありませんが、キャプチャされた画像はAVCaptureVideoPreviewLayer
画面に表示されるものとは異なります。私が本当にやりたいのは、キャプチャされたものをAVCapturePreviewLayer
レイヤーに表示されるように表示することです。どうすればこれを達成できますか?の境界に関して、キャプチャした画像のサイズを変更してトリミングするにはどうすればよいself.view
ですか?