如何在拍摄后立即在照片上绘图,然后保存到存储中
Posted
技术标签:
【中文标题】如何在拍摄后立即在照片上绘图,然后保存到存储中【英文标题】:How to draw on a photo IMMEDIATELY after taking it, THEN save to storage 【发布时间】:2017-03-27 22:35:31 【问题描述】:我四处搜索并找到了一些不同的解决方案来解决这个问题,但没有一个是我真正想要的。
我正在开发一个应用程序,让用户通过 MediaStore.ACTION_IMAGE_CAPTURE Intent 打开相机来拍摄图像......
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
然后用
保存图片File photo = new File(Environment.getExternalStorageDirectory(), titleOfPhoto + ".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
我什至将缩略图取回并在 onActivityResult() Override 中为用户显示。
正如标题所暗示的,我想做的是让用户在拍摄后立即在捕获的图像上绘图。但是我无法控制在打开相机和返回我的应用程序之间会发生什么,并且捕获的图像已经保存。像 SnapChat 和 WhatsApp 这样的应用程序正是这样做的,还有更多,所以我知道这是可能的,但 android 似乎没有内置这种功能。
要明确:事件的顺序需要是
1) 打开相机
2) 拍照
3) 在图片上画画
4) 按“确定”/“完成”或其他操作
5) 保存编辑后的照片
6) 返回缩略图
是否有向相机添加事件侦听器,或者以不同的方式打开相机以提供更多控制?任何帮助表示赞赏!谢谢!
【问题讨论】:
【参考方案1】:为此,您必须使用Camera Framwork API。
基本原理是在您的应用程序的 Surface View 上呈现相机输出。然后当用户拍照时,捕获表面视图的状态。从那里您可以允许您的用户在图片上绘图。完成后,保存图片并显示其缩略图。
【讨论】:
那个Framework API会帮上大忙,非常感谢!但是那篇文章中的一些示例代码很难转换为我的目的。您能否提供一些示例代码 sn-ps 来帮助填写空白?例如:拍照后如何操作 SurfaceHolder 对象?如何添加绘图功能? 我没有代码 sn-ps,但我想我会在 SurfaceView 上添加一个清晰的画布视图,并允许用户在上面绘图。它会使它看起来像是在画上。我不知道这将如何保存合并的画布和图像,但这可能是一个开始。我为此所做的所有工作都与视频有关,所以很遗憾我对图像捕捉知之甚少。以上是关于如何在拍摄后立即在照片上绘图,然后保存到存储中的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将图片上传到 html 表单,然后立即将相同的图片保存到拍摄它的手机/平板电脑上?
如何在拍照后立即将照片传输到 x-www-form-urlencoded EXPO