4

我目前正在开发一个具有相机功能的应用程序,带有自定义相机屏幕,具有预览屏幕和叠加层。

根据根除 UIScreenCapture,我正在使用 AVFoundation 类和方法。

我遇到的问题是我从 AVCaptureSession 获得的预览数据太放大了。如果我用那个屏幕拍照,另一个用 iPhone 的默认相机应用程序拍照,而不移动 iPhone,缩放的差异太大了。

我需要我的应用程序的缩放与 iPhone 相机应用程序的默认缩放相同。

我尝试将 AVCaptureVideoPreviewLayer.videoGravity 更改为 3 个可能值中的任何一个,但无济于事。

拜托,这个问题的任何线索都非常感谢。

4

3 回答 3

3

Arcantos 的解决方案大部分是正确的。假设您使用的是 iPhone 3G(或任何带有支持 640x480 的相机的设备),这将起作用。iPhone 4 可能会在那里遇到一些问题。

更正确的方法是测试并应用此预设的可用性:

captureSession.sessionPreset = AVCaptureSessionPresetPhoto;

这将使用原始相机数据,而不考虑原始分辨率。

于 2011-02-07T21:40:36.740 回答
2

原来是分辨率问题。它是通过使用修复的

myCaptureSession.sessionPreset = AVCaptureSessionPreset640x480

请注意,iPhone 3g 不支持,因此您必须询问设备是否支持它

[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] supportsAvCaptureSessionPreset:AVCaptureSessionPreset640x480]
于 2010-10-13T18:08:16.897 回答
0

预览窗格的纵横比是否与相机捕获数据的纵横比相同?如果没有,操作系统可能会更改缩放以使数据矩形适合您请求的纵横比。

于 2010-09-07T16:18:44.730 回答