Как получить растровое изображение от Uri? - PullRequest
174 голосов
/ 07 октября 2010

Как получить растровый объект из Uri (если мне удастся сохранить его в /data/data/MYFOLDER/myimage.png или file///data/data/MYFOLDER/myimage.png) чтобы использовать его в моем приложении?

У кого-нибудь есть идеи, как этого добиться?

Ответы [ 12 ]

0 голосов
/ 25 ноября 2017

Полный метод получения изображения URI из мобильной галереи.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

  if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
                Uri filePath = data.getData();

     try { //Getting the Bitmap from Gallery
           Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
           rbitmap = getResizedBitmap(bitmap, 250);//Setting the Bitmap to ImageView
           serImage = getStringImage(rbitmap);
           imageViewUserImage.setImageBitmap(rbitmap);
      } catch (IOException e) {
           e.printStackTrace();
      }


   }
}
0 голосов
/ 07 октября 2010

., ВАЖНО: См. Ответ @Mark Ingram ниже и @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-thread).Я AsyncTask.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...