Android 图像捕获后如何将内容转换为文件?

Android 图像捕获后如何将内容转换为文件?,android,Android,我使用以下代码片段在android中使用摄像头拍摄图像 Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = getOutputMediaFileUri(Constants.ATTACH_IMAGE); imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); imageIntent.putExtra("outputFormat",Bitm

我使用以下代码片段在android中使用摄像头拍摄图像

 Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 fileUri = getOutputMediaFileUri(Constants.ATTACH_IMAGE);
 imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
imageIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG.toString());startActivityForResult(imageIntent, Constants.ATTACH_IMAGE);
在onActivityResult中,我想将“content://”uri转换回文件,压缩它并显示一个缩略图。 我怎么做

编辑:-

我所尝试的:-

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Log.d("activity result","coming" + String.valueOf(requestCode)+ contentFileUri);
//        View popupView = getActivity().getLayoutInflater().inflate(R.layout.popup_add_snag, null);
//        LinearLayout attachLayout = (LinearLayout)popupView.findViewById(R.id.attachLayout);
//        ImageView photoImageicon = (ImageView)popupView.findViewById(R.id.imageicon);

        try{
//            if (resultCode == Constants.RESULT_OK){
                if(contentFileUri !=null) {
                    Log.d("fileuri", contentFileUri.toString());
                    String attachmentType = "IMAGE";
//                        mAdapter.attachmentType=attachmentType;
                    photoImageIcon.setVisibility(View.VISIBLE);
                    // attachLayout.setVisibility(View.INVISIBLE);
                    Toast.makeText(getActivity().getApplicationContext(), R.string.successfull_image, Toast.LENGTH_SHORT).show();
                    Log.d("fileuri", contentFileUri.toString());

                    InputStream inputStream =   getContext().getContentResolver().openInputStream(contentFileUri);
contentFileUri如下所示:-“content://com.fa.ha.provider/external_files/F/7c7.jpeg"


但上面的结果是最后一行出现“FileNotFound异常,而不是目录”。

理想情况下,只需挂起
getOutputMediaFileUri()
正在创建的
文件。希望,
getOutputMediaFileUri()
正在基于
文件
为您设置一个
文件提供程序
Uri
,因此如果您保留
文件
,您不必担心“转换”任何内容。看


如果
getOutputMediaFileUri()
写得不好,可能您没有
文件。在这种情况下,在
onActivityResult()
中,您可以将
Uri
传递到图像加载库(毕加索、Glide等),并让它填充
ImageView
,或者为您加载
位图

File File File=new File(fileUri.getPath())
?这不是问题所在的fileUri,这是一个contentUri。请参见
ContentResolver#openInputStream
,我尝试了,
openInputStream
正在工作是的。ContentResolver#openInputStream()将执行此操作。展示你的努力。请在你的帖子里。谢谢。。。。但两者都在不同的片段中(getOutputMediaFileUri()和onActivityResult()),因此我必须为文件创建一个成员变量,有什么方法可以避免它吗?例如,为了提供信息,我想从Uri重新创建文件。@SreekanthKarumanaghat:“有什么方法可以避免它吗?”--不。无论如何,
Uri
都需要一个字段/成员变量。毕竟,正如文档所示,
ACTION\u IMAGE\u CAPTURE
不会返回任何内容,比如你的
Uri
。你说得很好。但是问了一个一般性问题。我有没有办法将内容Uri转换为文件?@SreekanthKarumanaghat:注释中已经告诉了我们如何做。Call
openInputStream()
ContentResolver
上,提供
Uri
。在您控制的某个文件上打开
FileOutputStream
。使用标准Java I/O将
InputStream
中的字节复制到
FileOutputStream
。然后使用生成的文件。