您可以使用图像而不将其保存到Android上的文件吗?

时间:2016-08-08 18:13:56

标签: android

我尝试使用某些功能实现相机应用。我需要使用手机的相机拍照,然后操纵该图像。但是,我不需要将图片保存到文件中,我只需要获取一些"数据"从图片。有没有办法拍照,然后立即加载为位图,或者我需要至少保存,读取然后删除它。

我阅读了本教程:https://developer.android.com/training/camera/photobasics.html,但保存和删除图像在处理器上似乎很重,所以如果可以,我想避免使用它。 TY

3 个答案:

答案 0 :(得分:0)

启动意图

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_REQUEST);

活动结果

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {  
        Bitmap photo = (Bitmap) data.getExtras().get("data"); 
    }  
} 
  

注意:来自“数据”的缩略图可能对图标有用,但不是很多。处理完整尺寸的图像需要更多的工作。

答案 1 :(得分:0)

作为Saiteja Prasadam notes,如果您在EXTRA_OUTPUT上跳过ACTION_IMAGE_CAPTURE,则会通过Bitmap返回缩略图getExtra("data")

除此之外,您可以直接使用相机API(例如android.hardware.Camera)。

您可以尝试创建支持写入内存缓冲区而不是文件的ContentProvider,然后在content:中使用指向该提供程序的Uri EXTRA_OUTPUT。让这个工作正常,并且不会破坏你的堆空间,可能很困难或不可能。

总的来说,请记住,无论如何,您可能没有堆空间来存储全分辨率图像。我不知道“来自图片”的“某些”数据究竟意味着什么,但如果它依赖于将整个图像加载到RAM中,那么您将面临实施该问题的挑战。

答案 2 :(得分:0)

以下是相关的API文档: https://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback)

void takePicture (Camera.ShutterCallback shutter, 
            Camera.PictureCallback raw, 
            Camera.PictureCallback postview, 
            Camera.PictureCallback jpeg)

快门:图像捕捉时刻的回调,或为空 raw:原始(未压缩)图像数据的回调,或null postview:使用postview图像数据回调,可能为null jpeg:JPEG图像数据的回调,或null