我尝试使用某些功能实现相机应用。我需要使用手机的相机拍照,然后操纵该图像。但是,我不需要将图片保存到文件中,我只需要获取一些"数据"从图片。有没有办法拍照,然后立即加载为位图,或者我需要至少保存,读取然后删除它。
我阅读了本教程:https://developer.android.com/training/camera/photobasics.html,但保存和删除图像在处理器上似乎很重,所以如果可以,我想避免使用它。 TY
答案 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)
void takePicture (Camera.ShutterCallback shutter,
Camera.PictureCallback raw,
Camera.PictureCallback postview,
Camera.PictureCallback jpeg)
快门:图像捕捉时刻的回调,或为空 raw:原始(未压缩)图像数据的回调,或null postview:使用postview图像数据回调,可能为null jpeg:JPEG图像数据的回调,或null