0

我只想捕获视频预览层中的图像。目前,我这样设置:

[self setCaptureManager:[[[CaptureSessionManager alloc] init] autorelease]];
[[self captureManager] addVideoInputFrontCamera:YES]; // set to YES for Front Camera, No for Back camera
[[self captureManager] addStillImageOutput];

[[self captureManager] addVideoPreviewLayer];
CGRect layerRect = [[[self view] layer] bounds];
[[[self captureManager] previewLayer] setBounds:CGRectMake(0, 0, 320, 400)];//was layerRect
[[[self captureManager] previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect),CGRectGetMidY(layerRect))];// was CGPointMake(CGRectGetMidX(layerRect),CGRectGetMidY(layerRect))

[[[self view] layer] addSublayer:[[self captureManager] previewLayer]];

就目前而言,预览层代表了我想要捕捉的内容,但相机也捕捉到了超出这些范围的任何内容。我无法拍照并事后裁剪它,因为图像没有朝上,所以CGImageRef不起作用。无论如何要捕获预览层中的内容吗?

4

1 回答 1

1

这不是预览层应该做的。如果您需要拍照,您应该使用 StillImageOutput 或数据缓冲区。根据您捕获样本的方式,您应该注意相机的方向与设备方向。jpg 图像的方向保存在名为 EXIF 的元数据字典中。
Apple 有不同的示例代码展示如何进行静态图像捕获。这也是我写的关于EXIF 方向的博客文章。

于 2014-05-25T07:20:57.043 回答