你能在Android上使用图像而不保存到文件吗?
我正在尝试实现具有特定功能的摄像头应用程序。我需要用手机的照相机拍一张照片,然后处理那个图像。但是,我不需要将图片保存到文件中,我只需要从图片中获取一些数据。是否有一种方法可以拍摄照片,然后立即将其加载为位图,或者我至少需要保存它,读取它,然后删除它 我读了本教程:,但保存和删除图像似乎对处理器来说很沉重,所以如果可以的话,我想避免它。Ty启动意图 活动结果你能在Android上使用图像而不保存到文件吗?,android,Android,我正在尝试实现具有特定功能的摄像头应用程序。我需要用手机的照相机拍一张照片,然后处理那个图像。但是,我不需要将图片保存到文件中,我只需要从图片中获取一些数据。是否有一种方法可以拍摄照片,然后立即将其加载为位图,或者我至少需要保存它,读取它,然后删除它 我读了本教程:,但保存和删除图像似乎对处理器来说很沉重,所以如果可以的话,我想避免它。Ty启动意图 活动结果 注意:这个来自数据的缩略图对于图标来说可能很好,但不是很多。处理全尺寸图像需要更多的工作 启动意图 活动结果 注意:这个来自数据的缩略图对
注意:这个来自数据的缩略图对于图标来说可能很好,但不是很多。处理全尺寸图像需要更多的工作 启动意图 活动结果
注意:这个来自数据的缩略图对于图标来说可能很好,但不是很多。处理全尺寸图像需要更多的工作 同样,如果您跳过动作图像捕获时的额外输出,您将通过getExtradata返回缩略图位图 除此之外,您还可以直接使用摄像头API,例如android.hardware.camera 您可以尝试创建支持写入内存缓冲区而不是文件的ContentProvider,然后在额外输出中使用指向该提供程序的content:Uri。在不分割堆空间的情况下,使其正常工作可能很困难或不可能 总的来说,请记住,您可能没有堆空间来存放全分辨率图像。我不知道图片中某些数据的确切含义,但如果它取决于将整个图像加载到RAM中,那么实现这一点将面临挑战。因为,如果您跳过动作图像捕获的额外输出,您将通过getExtradata返回缩略图位图 除此之外,您还可以直接使用摄像头API,例如android.hardware.camera 您可以尝试创建支持写入内存缓冲区而不是文件的ContentProvider,然后在额外输出中使用指向该提供程序的content:Uri。在不分割堆空间的情况下,使其正常工作可能很困难或不可能
总的来说,请记住,您可能没有堆空间来存放全分辨率图像。我不知道图片中的某些数据的确切含义,但如果它取决于将整个图像加载到RAM中,那么实现这一点将面临挑战。以下是相关的API文档: 快门:图像捕捉瞬间的回调,或为空 原始:原始未压缩图像数据的回调,或null postview:具有postview图像数据的回调,可能为空
jpeg:jpeg图像数据的回调,或null以下是相关的API文档: 快门:图像捕捉瞬间的回调,或为空 原始:原始未压缩图像数据的回调,或null postview:具有postview图像数据的回调,可能为空
jpeg:对jpeg图像数据的回调,或null注意:此数据的缩略图可能适合用作图标,但不适用于更多。根据我提供的链接,处理全尺寸图像需要更多的工作。我没有意识到,似乎没有直接的方法来获取全尺寸图像。您被迫将其保存到文件中。如果您被迫将其保存到文件中,那么WhatsApp在直接拍摄和发送图像时如何处理?我真的无法想象没有更好的方法…注意:这个来自数据的缩略图可能适合作为图标,但不是更多。根据我提供的链接,处理全尺寸图像需要更多的工作。我没有意识到,似乎没有直接的方法来获取全尺寸图像。您被迫将其保存到文件中。如果您被迫将其保存到文件中,那么WhatsApp在直接拍摄和发送图像时如何处理?我真的无法想象没有更好的方法…应用程序可用的RAM有限,因此您肯定希望将图像保存到一个文件中,然后通过InputStream对其进行小部分解析。使用intents,没有,因为捆绑包的大小限制了可以传回的图像的大小。直接使用相机,应用程序可用的sure.RAM受到限制,因此您肯定希望将图像保存到文件中,然后通过InputStream对其进行小部分解析。使用intents,则不会,因为捆绑包的大小限制了可以传回的图像的大小。直接使用相机,当然。
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");
}
}
void takePicture (Camera.ShutterCallback shutter,
Camera.PictureCallback raw,
Camera.PictureCallback postview,
Camera.PictureCallback jpeg)