2013-03-06 8 views
16

ich Bilder von Drawable an eine E-Mail anhängen versuchten, konvertieren (von meiner App zu Gmail app)Wie ein Auslosungs Bild von Ressourcen zu einem Bitmap

ich den nächsten Code versucht:

 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); 

Aber wenn ich das Bild an die E-Mail angehängt bekomme ich den Anhang ohne die Erweiterung ".png" und das ist ein großes Problem.

Also ich denke in versuchen, diese Drawable Bilder in Bitmap zu konvertieren und auch ich denke, dass die ArrayList muss Bitmap sein. Ich denke, dass ich das Image Image im Anhang definiert bekommen werde.

Wenn es möglich ist, kann mir jemand sagen, wie es geht? In Bitmap konvertieren, zu Arraylist hinzufügen und das Bild anhängen.

Wenn ich falsch in allem bin, was ich gesagt habe, kann mir jemand eine Lösung geben? Ich muss die Bilder von Drawable an die E-Mail mit der Erweiterung (.png) anhängen.

+0

haben Sie versucht ** GetBitmap() ** – hakiko

+1

Kopieren und Einfügen Ihres Titels in Google: http://StackOverflow.com/Questions/8717333 – dymmeh

+0

Gooooooogle ist die Antwort! – lelloman

Antwort

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

Auch Er kann mit dem <bitmap> Elemente in einer XML-Datei definiert werden.

+0

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

+0

dies sollte effizienter sein als andere Lösungen, aber ich sehe, dass getDrawable veraltet ist – usman

+0

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

5

hier das Stück Code, überprüfen Sie es einfach aus:

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

Die direkte Weg ist:

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

Sie können konfigurieren die Bitmap mehr, wenn Sie es definieren, in .xml Zeichnungsdatei wie:

<?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); 

Wo mContext ist Ihre Aktivität Kontext.

32

Es gibt 3 Möglichkeiten Umwandlung auszuführen:

  1. Stellen Sie den ImageView mit resource image

    imageView.setImageResource(R.drawable.icon); 
    

    und dann die Bitmap aus Imageview erhalten

    Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap(); 
    
  2. Holen Sie sich das ziehbar Ressource direkt von Resource ID

    Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.profile_circle); 
    
  3. Stellen Sie das Bild auf dem ImageView dann wandeln sie in Bitmap (funktioniert für svg/VectorDrawable auch)

    ImageView imgView = (ImageView) findViewById(R.id.ImageView); 
    imgView.setImageResource(R.drawable.abc_image); 
    z.setDrawingCacheEnabled(true); 
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache()); 
    
Verwandte Themen