猿问

如何从URI中获取位图?

如何从URI中获取位图?

如何从URI中获取Bitmap对象(如果我成功地将它存储在/data/data/MYFOLDER/myimage.pngfile///data/data/MYFOLDER/myimage.png在我的应用程序中使用它?

有没有人知道如何做到这一点?


POPMUISE
浏览 597回答 3
3回答

Helenr

. . 重要信息:请参见下面@MarkIngram和@pjv的回答以获得更好的解决方案。 . .你可以试试这个:public Bitmap loadBitmap(String url){     Bitmap bm = null;     InputStream is = null;     BufferedInputStream bis = null;     try      {         URLConnection conn = new URL(url).openConnection();         conn.connect();         is = conn.getInputStream();         bis = new BufferedInputStream(is, 8192);         bm = BitmapFactory.decodeStream(bis);     }     catch (Exception e)      {         e.printStackTrace();     }     finally {         if (bis != null)          {             try              {                 bis.close();             }             catch (IOException e)              {                 e.printStackTrace();             }         }         if (is != null)          {             try              {                 is.close();             }             catch (IOException e)              {                 e.printStackTrace();             }         }     }     return bm;}但是请记住,这个方法应该只从线程中调用(而不是GUI线程)。我是一个AsyncTask。

幕布斯7119047

以下是正确的做法:protected void onActivityResult(int requestCode, int resultCode, Intent data){     super.onActivityResult(requestCode, resultCode, data);     if (resultCode == RESULT_OK)     {         Uri imageUri = data.getData();         Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);     }}如果您需要加载非常大的映像,下面的代码将其加载到Tiles中(避免大内存分配):BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(myStream, false);   Bitmap region = decoder.decodeRegion(new Rect(10, 10, 50, 50), null);见答案这里
随时随地看视频慕课网APP

相关分类

Android
我要回答