从 inputStream 获取文件路径
Get filepath from inputStream
我正在从图库中加载图片并将其设置为图像视图,但我有一个旋转图像的功能,并且该功能需要图像 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()
需要图片的文件路径,不知如何获取...
使用光标:
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();
使用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);
我正在从图库中加载图片并将其设置为图像视图,但我有一个旋转图像的功能,并且该功能需要图像 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()
需要图片的文件路径,不知如何获取...
使用光标:
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();
使用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);