如何将URI(从mediastore)转换为图像(Bitmap)?

时间:2013-11-19 19:55:18

标签: android bitmap

嘿我查了几个问题,几乎所有的问题都与互联网有关,主要包括openConnection()和getInputStream()这样的方法,但我和Media Store有关,所以我在这里再问这个问题...... 我可以通过使用媒体商店和光标获取相册URI,但我不知道如何继续进行 提前完成。

我试过

Bitmap bitmap=null;
            MediaMetadataRetriever mmr = new MediaMetadataRetriever();


            byte[] rawArt = null;

            BitmapFactory.Options bfo=new BitmapFactory.Options();
            mmr.setDataSource(string);
             rawArt = mmr.getEmbeddedPicture();


             bitmap=BitmapFactory.decodeByteArray(rawArt, 0, rawArt.length, bfo);

但没有帮助

编辑媒体商店部分.......

columns  = new String[]{ android.provider.MediaStore.Audio.Albums._ID,
            android.provider.MediaStore.Audio.Albums.ALBUM,
             MediaStore.Audio.Albums.ALBUM_ART };
            cursor = 

    getActivity().managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                columns, null, null, null);


                if(cursor != null){
                    while(cursor.moveToNext()) {
                    SongDetails songs = new SongDetails();
                    songs.song= cursor.getString(1);
                    songs.Path=cursor.getString(2);
                    //songs.Album=cursor.getString(0);
                    //songs.Artist=cursor.getString(1);
                    songdetails.add(songs);
                    }}
                list=(GridView)container.findViewById(R.id.grid_view);
                adapter=new LazyAdapter( songdetails);

一个URI:"/storage/sdcard0/Android/data/com.android.providers./media/albumthumbs/138216121805

2 个答案:

答案 0 :(得分:2)

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);

答案 1 :(得分:2)

最简单的解决方案是使用ContentResolver

InputStream is = context.getContentResolver.openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(is);

或者,快捷方式:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri)

context变量可以是ActivityService,应用程序上下文等。