捕获图像而不将其存储到内部/外部存储

Posted

技术标签:

【中文标题】捕获图像而不将其存储到内部/外部存储【英文标题】:Capturing an image without storing it to internal/external storage 【发布时间】:2018-05-28 09:27:46 【问题描述】:

出于安全原因,我需要将通过相机捕获的图像传输到服务器“而不将其存储到内部或外部存储中”。请帮忙!

【问题讨论】:

分享你到目前为止所尝试的。 为什么不直接存储、上传、删除? 将其设为base64字符串并发送,这样您就不需要存储它了。 【参考方案1】:

为此,您需要将 android 应用程序连接到 Web 服务,方法是将其存储在内存中的 Bitmap 变量中,并在使用代码或将图像发送到服务器后销毁它。

【讨论】:

【参考方案2】:

您可以使用Camera#takePicture(...),它将通过PictureCallback返回作为字节数组拍摄的图片。

这是一个拍照的伪代码。

Camera.ShutterCallback shutterCallback = () -> Log.i("Shutter has been triggered");
Camera.PictureCallback rawCallback = (data, camera) -> Log.d("Picture has been taken.");
Camera.PictureCallback jpegCallback = (data, camera) -> 
        // Do something with the picture here.
    ;

Camera camera = Camera.open();
camera.startPreview();
camera.takePicture(shutterCallback, rawCallback, jpegCallback)

请注意,此示例使用"old" Camera V1 API,这与Camera V2 API 非常不同。您可以查看this post 了解这两个 API 的完整差异

【讨论】:

以上是关于捕获图像而不将其存储到内部/外部存储的主要内容,如果未能解决你的问题,请参考以下文章

直接将文件上传到SFTP而不将其存储到本地系统[重复]

Android:旋转图像而不将其加载到内存中

如何在内部存储中创建文件夹并保存捕获的图像

下载然后上传图像而不存储它

如何执行汇编操作码而不将其存储到缓冲区 c/python 中?

如何使用自定义 gradle 插件而不将其发布到 maven/ivy 存储库?