需要近期真实人像
在部分特殊应用中,我们需要获取用户近段时间的真实人像。
需要用户在app中进行人像的自助采集,要求只能调用相机拍照,不能通过相册或其他途径选择图片。
一、传统方式
一般的,遇到这类需求,直接调用前置摄像头即可。
这种方式简单粗暴,也能达到需求,但总结一下,有以下弊端:
- 在uni-app框架中,Android端调用前置摄像头有些设备会无法指定使用前置相机(不清楚目前有没有优化,我开发过程中遇到过)。
- 打开原生相机页面不属于应用内页面,使用割裂感强。
- 原生相机照片分辨率无法非常方便的控制,有时候还需要加入压缩功能。
- 原生相机对内存的消耗极大,个别机型上容易导致应用闪退等问题。
二、基于推流组件方式
基于传统方式所涉及的问题,我在实践中发现了一种新的解决方式:
基于推流组件来进行人像采集。
主体方式:
用户需要采集头像时,直接将原来头像的位置显示一个推流组件或使用推流组件单独添加一个人像采集页面,用户在本应用的体制内就用进行人像拍摄;并且我在使用推流组件是,未发现有指定前置摄像头无效的情况。调用推流抓拍生成的图片文件也不会太大,基本符合用来做头像或人脸对比等需求。
该方式我已实测可用于iOS/Android/微信小程序。
注意:
- 微信小程序上需要先发起推流后才能抓拍(最简单的解决方案就是随便给个推流地址,在推流失败事件中又调用开始推流即可)
实现方法
具体实现请移步至uni-app插件市场:live-camera 自定义相机。