我目前正在开发一款具有相机功能的应用程序,带有自定义相机屏幕,具有预览屏幕和叠加层。
根据UIScreenCapture,我正在使用AVFoundation类和方法。
我遇到的问题是我从AVCaptureSession获得的预览数据太大了。如果我用那个屏幕拍照,而另一个用iPhone的默认相机应用程序,而不用移动iPhone,则缩放的差异很大太多了。
我需要将我的应用缩放与iPhone相机应用的默认设置相同。
我已经尝试将AVCaptureVideoPreviewLayer.videoGravity更改为其中任何一个可能的值,但无济于事。
拜托,对此问题的任何线索都非常感激。
答案 0 :(得分:2)
Arcantos的解决方案大多是正确的。假设您使用的是iPhone 3G(或任何支持640x480相机的设备),那将会有效。 iPhone 4可能会遇到一些问题。
更正确的方法是测试可用性并应用此预设:
captureSession.sessionPreset = AVCaptureSessionPresetPhoto;
无论原始分辨率如何,都将使用原始相机数据。
答案 1 :(得分:1)
原来是一个决议问题。 它是通过使用
修复的myCaptureSession.sessionPreset = AVCaptureSessionPreset640x480
请注意,iPhone 3g不支持,因此您必须询问设备是否支持
[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] supportsAvCaptureSessionPreset:AVCaptureSessionPreset640x480]
答案 2 :(得分:0)
预览窗格的宽高比是否与摄像头捕获数据的宽高比相同?如果没有,操作系统可能会更改缩放以使数据矩形符合您要求的宽高比。