Android 仿微信朋友圈拍照原理解读,技术分析

本文探讨了如何在Android应用中实现类似微信的快速拍照和编辑体验。通过分析camera2和cameraX在拍照过程中的延迟和图像差异问题,提出了利用PreviewView或TextureView的getBitmap()方法,即时保存预览帧为照片,从而达到瞬时响应和预览无差别的效果。尽管这牺牲了部分照片质量,但能提供更流畅的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日常开发中,我们的APP中经常会有拍照的功能,很多的产品经理会要求把拍照和拍照后编辑的体验弄成和微信一样。

先来看看微信的拍照界面和编辑界面

 

微信拍照的两个优点 :1.响应速度快,从点击拍照按钮,到编辑界面出来你  几乎无延迟。

                                     2.编辑界面的图片和预览界面毫无差别,所见即所得

今天就讲讲如何实现速度快和照片无差别

先来看一下camera2的拍照 Android 使用 Camera2 完成预览和拍照 - 走看看

camera2拍照是通过imageReader实现照片保存的 

 

这个方式通常会有一个问题就是照片的处理保存需要很长的时间,而且需要精确的控制每个手机的分辨率,否则很容易出现拍完照展示出来的图片和预览的不一致 ,中间有明显的变化过程 

再来看看cameraX,Android的camerax预览拍照_Jason_Lee155的博客-CSDN博客_android 相机预览拍照
cameraX拍照比较简单,

通过imageCapture  可以配置照片的比例,质量 ,方向等,但是也是存在照片生成时间长,预览和实际得到的照片存在一定比例的缩放问题。

可见传统的方案都多少有问题。。。。。这就是我们今天要说的问题

实际上在cameraX使用的PreviewView和camera2中使用的TextureView中  都有gitBitmap()这个方法

 

 这个方法就是获取当前预览的瞬时图像,那我们的代码完全可以这样写

 当点击按钮的时候,直接将当前预览的一帧图像,保存成一张照片

如果需要编辑,则直接将bitmap  显示到编辑的界面上,编辑完了再保存到文件中

这样就能做到点击拍照按钮以后瞬时反应,且图像跟预览的毫无差别,实现类似微信的拍照效果

但是这个方法只针对于固定需求,因为这样拿到的图像,生成照片质量是比较差的,需要高质量的照片还是需要等待,这也是微信拍照编辑出来的照片质量比较差的原因

好了  今天就到这里了,希望能帮到大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值