iOS中的高精度图片采集和使用注意点和关键步骤

通常的方案都是基于AVCaptureSession的采集;这里采集出来的源数据的精度是可以通过一系列的配置来控制的;

AVCaptureSessionPresetPhoto  

AVCaptureSessionPresetHigh

AVCaptureSessionPresetMedium

AVCaptureSessionPresetLow

。。。

精度从高到低;以iphone6为例,可以输出的最高精度的图片分辨率为2448*3264(AVCaptureSessionPresetPhoto);

而输出在配置为AVVideoCodecJPEG后会自动启用硬件压缩,在这个过程中图像的精度应该没有什么损失。

用户在保存图片前可以根据需要在UIImageJPEGRepresentation里传递不同的参数来生成不同大小的文件(有损压缩,压缩比率不同)。


我们的项目中遇到的问题是,在一个列表中有多个图像选择的控件,控件中的图片来源于拍摄;当我们配置的输出为最高精度的图片时(客户需求,拍摄正式的协议文档等),分辨率是很高的;这里有一个致命的失误:控件中的缩略图直接加载文件原图,在这个过程中生成UIImage占用的内存是非常惊人的;而同时在一个列表中加载几十张高清图片时,很容易就达到了系统所允许的最高阈值,所以被系统kill而让笔者感到蛋疼的是,没有任何的崩溃日志;相应的viewcontroller里面也没有收到didreceivememorywarning的通知;使用instruments分析的时候能看出一些信息,虽然没有内存泄漏,但allocations一直在增加。我的印象中以前这类问题是有信息的,不知道是系统原因还是什么。

笔者调试该问题的环境是 iphone6 10.2.1系统,xcode 8.2。


参考资料:

New AV Foundation Camera Features for the iPhone 6 and iPhone 6 Plus:

https://developer.apple.com/library/content/technotes/tn2409/_index.html  

objc.io-capturing-video:

https://www.objc.io/issues/23-video/capturing-video/




欢迎大家就此问题和我讨论,感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值