来自路径的ImageView

时间:2019-02-14 12:09:30

标签: android

我知道这个主题已经存在,但是所有示例都不适用于我的项目。

我尝试通过他的真实路径在ImageView中显示图像。我怎么了?

我尝试了MediaScannerConnection和位图。

通过MediaScanner:

String path = "/storage/emulated/0/Download/Park-2.jpg";

MediaScannerConnection.scanFile(this, new String[] { path }, null, new MediaScannerConnection.OnScanCompletedListener() {
            public void onScanCompleted(String path, Uri uri) {
                uriImage = uri;
            }});
iv.setImageURI(uriImage);

按位图:

iv=findViewById(R.id.imageView);

String path = "/storage/emulated/0/Download/Park-2.jpg";
File imgFile = new  File(path);

if(imgFile.exists()){
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    iv.setImageBitmap(myBitmap);
}

权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

获取路径的代码:

public String getRealPathFromURI(Context context, Uri contentUri) {
        Cursor cursor = null;
        try {
            String[] proj = { MediaStore.Images.Media.DATA };
            cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

尝试使用Environment.getExternalStorageDirectory()获取路径。 另外,您可以尝试使用http://square.github.io/picasso/,这确实使您的工作更加轻松。例: Picasso.get()。load(new File(...))。into(imageView);

答案 1 :(得分:0)

在您的代码中添加位图工厂选项,如下所示:

Bitmap bitmap = BitmapFactory.decodeFile("your_path", BitmapFactory.Options())
imageview.setImageBitmap(bitmap)

确保用户允许READ_EXTERNAL_STORAGE权限。