2013-12-26 4 views
13

Я включил опцию «share via myApp». Я вставил следующий код в класс принимающей активности.Извлечь растровое изображение из uri

// Get the intent that started this activity 
    Intent intent = getIntent(); 
    Uri data = intent.getData(); 

    // Figure out what to do based on the intent type 
    if (intent.getType().indexOf("image/") != -1) { 
     // Handle intents with image data ... 
} 

Что является следующим шагом для извлечения растрового изображения.

ответ

6

Для получения растрового изображения из Ури

Bitmap mBitmap = Media.getBitmap(this.getContentResolver(), uri); 

Надеется, что это помогает.

+7

Также помните, чтобы назвать это от не основной нити (фоновый поток) – Magnus

-4

Пожалуйста, предпочитайте эту ссылку.

Это то, что вы ищете How to get Bitmap from an Uri?

Попробуйте это работает для меня:

public static Bitmap getBitmapFromURL(String src) { 
     try { 
      System.out.printf("src", src); 
      URL url = new URL(src); 
      HttpURLConnection connection = (HttpURLConnection) url 
        .openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 
      Bitmap myBitmap = BitmapFactory.decodeStream(input); 
      System.out.printf("Bitmap", "returned"); 
      myBitmap = Bitmap.createScaledBitmap(myBitmap, 100, 100, false);//This is only if u want to set the image size. 
      return myBitmap; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.out.printf("Exception", e.getMessage()); 
      return null; 
     } 
+0

не URL его URI –

+0

Теперь проверить это .. – rup35h

+0

Тем не менее пытается выбор из Url, это URI @nikvs имеет самое чистое решение (используя метод getBitmap' из класса MediaStore) – Magnus

31

Как вы уже получить Ури. Теперь вы должны передать это Uri в getBitmap(), чтобы получить растровое изображение и использовать это растровое изображение.

Uri imageUri = intent.getData(); 
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri); 
Imageview my_img_view = (Imageview) findViewById (R.id.my_img_view); 
my_img_view.setImageBitmap(bitmap); 
+1

Было бы лучше объяснить, почему этот код является ответом. –

+2

@chintan khetiya К сожалению, он вернет мне FileNotFoundException –

1
Retrive bitmap from uri..... 

public static Bitmap decodeUriToBitmap(Context mContext, Uri sendUri) { 
     Bitmap getBitmap = null; 
     try { 
      InputStream image_stream; 
      try { 
       image_stream = mContext.getContentResolver().openInputStream(sendUri); 
       getBitmap = BitmapFactory.decodeStream(image_stream); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return getBitmap; 
    } 
+0

Какие могут быть исключения? – CoolMind

0

Это работа для меня

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); 
} 
} 
+0

Работает в основной теме. Также компилятор предупреждает, что может произойти IOException. – CoolMind

Смежные вопросы