【问题标题】:Get filepath from inputStream从 inputStream 获取文件路径
【发布时间】:2018-07-12 07:08:02
【问题描述】:

我正在从图库中加载图片并将其设置为 imageview,但我有一个旋转图像的功能,该功能需要图像 Uri。当我从内存中读取图片时,我使用以下代码

if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_PERMISSION);
    }else{
        Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
        photoPickerIntent.setType("image/*");
        startActivityForResult(photoPickerIntent, SELECT_FILE);
    }

然后

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == SELECT_FILE){
        if(resultCode == RESULT_OK){
            imageUri = data.getData();
            InputStream imageStream = null;
            try {
                imageStream = getContentResolver().openInputStream(imageUri);
            }catch (IOException e){e.printStackTrace();}
            final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
            final Bitmap rotatedImage = rotateBitmap(selectedImage, **image file path**);
            profilePic.setImageBitmap(rotatedImage);
        }
    }
}

函数rotateBitmap()需要图片的文件路径,不知道怎么获取...

【问题讨论】:

  • 没有“文件路径”。您的rotateBitmap() 方法需要重写,或者您需要提供自己的写入路径。

标签: android image file-io inputstream


【解决方案1】:

使用 Uri 可以获得图像的路径... 试试这个代码,可能对你有帮助

    Cursor cursor = getContentResolver().query(Use_Uri_Here, null, null, null, null); 
cursor.moveToFirst(); 
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
String imagePath = cursor.getString(idx); 

【讨论】:

    【解决方案2】:

    使用光标:

    Uri selectedImageUri = data.getData();
    String[] proj = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(selectedImageUri, proj, null, null, null);
    if (cursor.moveToFirst()) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        String  file_path = cursor.getString(column_index);
    }
    cursor.close();
    

    【讨论】:

    • 完美 - 工作没有问题。谢谢一百万!
    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2013-07-26
    • 2021-10-28
    相关资源
    最近更新 更多