2013-03-06 15 views
16

ja próbuje dołączyć obrazy z rozciągliwej do wiadomości e-mail (z mojej aplikacji do aplikacji Gmail)Jak przekonwertować rozciągliwej obraz ze środków na bitmapę

Próbowałem następny kod:

 Intent emailintent2 = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
     emailintent2.setType("image/*"); 
     emailintent2.putExtra(Intent.EXTRA_EMAIL, emailaddress2); 
     emailintent2.putExtra(Intent.EXTRA_SUBJECT, CorAsunto); 
     emailintent2.putExtra(Intent.EXTRA_TEXT, message2); 

     ArrayList<Uri> uris = new ArrayList<Uri>(); 
     uris.add(Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.image1)); 
     uris.add(Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.image2)); 

     emailintent2.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
     startActivity(emailintent2); 

Ale kiedy załączam obraz do e-maila, otrzymuję załącznik bez rozszerzenia ".png" i to jest duży problem.

Więc myślę, że próbuję przekonwertować te obrazy do bitmapy, a także myślę, że ArrayList będzie musiała być bitmapą. Myślę, że dostanę obrazek z obrazem zdefiniowanym w załączniku.

Jeśli to możliwe, czy ktoś może mi powiedzieć, jak to zrobić? Konwertuj na mapę bitową, dodaj do Arraylist i dołącz obraz.

Jeśli się mylę we wszystkim, co powiedziałem, czy ktoś może mi pomóc? Muszę dołączyć obrazy z Drawable do e-maila z rozszerzeniem (.png).

+0

próbowałaś ** getBitmap() ** – hakiko

+1

Kopiowanie i wklejanie tytułu w google: http://stackoverflow.com/questions/8717333 – dymmeh

+0

gooooooogle jest odpowiedzią! – lelloman

Odpowiedz

19
Drawable myDrawable = getResources().getDrawable(R.drawable.anImage); 
Bitmap anImage  = ((BitmapDrawable) myDrawable).getBitmap(); 

Również może być zdefiniowana w pliku XML z elementem <bitmap>.

+0

http://codingaffairs.blogspot.com/2016/06/how-to-convert-drawable-to-bitmap-in.html –

+0

powinno to być bardziej wydajne niż inne rozwiązania, ale widzę, że getDrawable jest przestarzałe – usman

+0

@usman http://stackoverflow.com/a/29146895/1848929 – hakiko

5

oto kawałek kodu, po prostu to sprawdzić:

Bitmap Icon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon); 
6

bezpośredni sposobem jest:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

Można skonfigurować bitmapy więcej jeśli zdefiniować go w Plik w formacie .xml jako:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@[package:]drawable/drawable_resource" 
    android:antialias=["true" | "false"] 
    android:dither=["true" | "false"] 
    android:filter=["true" | "false"] 
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | 
         "fill_vertical" | "center_horizontal" | "fill_horizontal" | 
         "center" | "fill" | "clip_vertical" | "clip_horizontal"] 
    android:mipMap=["true" | "false"] 
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] /> 
4
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(), 
      R.drawable.ic_launcher); 

Gdzie mContext jest kontekstem aktywności.

32

Istnieją 3 sposoby, aby wykonać konwersję:

  1. Ustaw wartości ImageView z resource image

    imageView.setImageResource(R.drawable.icon); 
    

    a następnie dostać bitmapę z ImageView

    Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap(); 
    
  2. Pobierz zasób rozciągliwej bezpośrednio Resource ID

    Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.profile_circle); 
    
  3. Ustaw obraz na ImageView następnie przekształcić go w Bitmap (działa dla SVG/VectorDrawable zbyt)

    ImageView imgView = (ImageView) findViewById(R.id.ImageView); 
    imgView.setImageResource(R.drawable.abc_image); 
    z.setDrawingCacheEnabled(true); 
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache()); 
    
Powiązane problemy