AVCaptureSession预设会创建一张太大的照片

时间:2014-03-31 03:34:27

标签: ios objective-c avfoundation avcapturesession

我有一张正在使用AVFoundation的照片应用。一旦捕获了图像,我就必须运行2种核心图形方法才能正确旋转和裁剪图像。

使用会话预设为AVCaptureSessionPresetPhoto的{​​{3}}对此进行测试时,我总是收到大量的内存警告,我花了两周时间尝试解决这些问题,最后我放弃了。

我最终放弃了典型的captureStillImageAsynchronouslyFromConnection设置并使用另一个“捕获”视频帧的设置。这种新方法效果很好,最终图像质量与AVCaptureSessionPresetPhoto产生的旧图像质量相匹配,图像的分辨率要小得多,因此我不再处理内存问题或警告。

图像旋转和裁剪现在几乎立即发生,几乎完全不明显,因为新尺寸要小得多。

据我所知,唯一的区别是,AVCaptureSessionPresetPhoto会产生分辨率为2448 x 3264的照片,而我的新方法会产生852 x 640的分辨率看似相同。

然而,由于这种新方法在技术上并不执行真正的“相机捕捉”,我将不得不花一些时间添加相机声音效果,以编程方式调用闪光灯/手电筒来添加闪光灯功能等。在此之前从这条定制之路开始,我决定重新审视开发人员在使用AVFoundation捕获照片时通常使用的旧设置。

以下是我正在谈论的“典型”设置的链接:typical AVFoundation setup for capturing camera photos

我最后一次测试了所有会话预设,但没有一个像AVCaptureSessionPresetPhoto那样工作。分辨率要么太小,要么分辨率可能会有效,但预览会放大,这是不可接受的。

还有其他选择吗?我可以在某些预设中禁用缩放吗?或者我可以自定义AVCaptureSessionPresetPhoto预设的实际图像大小吗?我可以从头开始创建新的自定义预设并添加吗?

我一直在寻找答案,但似乎大多数人只是建议使用可用的默认预设。

0 个答案:

没有答案