当前位置: 首页 > 知识库问答 >
问题:

来自Android摄像头意图的图像路径

查宜修
2023-03-14
File file = new File(context.getFilesDir(), "picture.jpg");
Uri uri = FileProvider.getUriForFile(getApplicationContext(), "my.app.package.fileprovider", file);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent, ACTION_IMAGE_CAPTURE_REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != RESULT_OK) {
        return;
    }
    switch (requestCode) {
    case ACTION_IMAGE_CAPTURE_REQUEST_CODE:
        // How do I get the local path to the file here?
        break;
    }
}

在相机意图返回时获得文件路径的最佳方法是什么。当然,我可以在启动意图之前将文件路径保存到成员变量,但这似乎不好,我应该从OnActivityResult中获得路径。

我已经试过了(从相机意图获取图像路径):

String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(MediaStore.Images.Media.INTERNAL_CONTENT_URI,projection, null, null, null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToLast();

String imagePath = cursor.getString(column_index_data);

唯一不同的是,我在尝试内部存储pic时使用了INTERNAL_CONTENT_URI。如果我这样做,我会得到一个异常:

共有1个答案

高锦
2023-03-14

获取相机意图返回文件路径的最佳方法是什么

您在extra_output中指定了文件路径。不是相机把照片放在那里,就是没有。如果是,那么您已经知道文件路径:new file(context.getFilesDir(),“picture.jpg”)。绝大多数时候都应该是这样。

有些相机应用程序有缺陷,会忽略extra_output。在这些情况下:

您可以查看“data”额外部分是否存在,在这种情况下,这是一个位图缩略图,您可以将其保存到所需的位置。

在所有这些情况下,文件路径都是您指定的;这仅仅是一个问题,是否需要额外的工作,你得到的图像在那里。

当然,我可以在启动意图之前将文件路径保存到成员变量,但这似乎很糟糕

我应该在内部存储图片吗?

你已经是了。

如果我将pic存储到外部存储,我必须请求用户允许写到外部

 类似资料:
  • 我的第一个问题!我有一段代码有问题,它用额外的输出选项开始相机意图,然后在活动结果上试图调整图像的大小。正在发生的情况是,在回调时的resize函数中会引发一个nullpointer异常。 活动结果回调函数: 下面是logcat:

  • 有人知道模拟器相机启动时是否有可能打开一些个人照片吗? 我有一个基于图像分析的应用程序,我想当我点击相机的按钮时,相机打开的不是默认的Android emulator运动图像。我希望它打开一些我设置为默认图像的图像。因此,当我选择拍照时,它将只显示该图像,当我拍照时,该图像将保存到gallery,而不是Android默认图像。

  • 我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗? 来自画廊 从相机

  • 问题内容: 我环顾四周,但似乎并没有解决这个非常恼人的问题的可靠答案。 我以纵向拍摄照片,然后单击“保存/放弃”,按钮也以正确的方向放置。问题是当我随后在横向上检索图像时(图像已逆时针旋转90度) 我不想强迫用户以特定方向使用相机。 有没有办法检测照片是否以人像模式拍摄,然后解码位图并将其向上翻转? 问题答案: 照片始终以相机内置在设备中的方向拍摄。为了使图像正确旋转,您必须读取存储在图片中的方向

  • 在为inApp相机实施camera2 API后,我注意到在三星设备上图像显得模糊。搜索之后,我找到了Sasmung Camera SDK(http://developer.samsung.com/galaxy#camera)。因此,在三星Galaxy S7上实施SDK后,图像现在很好,但在Galaxy S6上它们仍然模糊不清。有人在三星设备上遇到过这些问题吗? 编辑:补充@rcsumners的评论

  • 这是我的清单文件 我已经添加了文档和之前的stackoverflow答案中推荐的图像捕获,但它仍然不起作用。它在Anroid 10中运行良好,但在11中不起作用。 提前感谢。