Comment convertir une image dessinable de ressources en Bitmap

je essayaient de joindre des images à partir de Drawable à un courriel (à partir de mon application à application Gmail)

j'ai essayé le code suivant:

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

Mais quand j'attache l'image à l'email je reçois l'attache sans l'extension ".png" et c'est ce qui est un gros problème.

donc je pense que dans essayer de convertir ces images dessinables en Bitmap et aussi je pense que L'ArrayList devra être Bitmap. Je pense que je vais obtenir l'image a image définie dans le attachement.

Si c'est possible, quelqu'un peut me dire comment faire? Convertissez en Bitmap, ajoutez à Arraylist et attachez l'image.

Si je me trompe dans tout ce que j'ai dit, quelqu'un peut-il me donner une solution? J'ai besoin de joindre les images de Drawable à l'e-mail avec l'extension (.png).

17
demandé sur Roberto Zuniga 2013-03-06 22:53:22

5 réponses

Il y a 3 façons d'effectuer la conversion:

  1. mettez le ImageViewresource image

    imageView.setImageResource(R.drawable.icon);
    

    et puis obtenir l'image à partir d'imageView

    Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
    
  2. Obtenir le drawable ressources directement par Resource ID

    Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.profile_circle);
    
  3. positionnez l'image sur le ImageView alors convertissez-le en Bitmap (pour les svg/VectorDrawable trop)

    ImageView imgView = (ImageView) findViewById(R.id.ImageView);
    imgView.setImageResource(R.drawable.abc_image);
    z.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
    
35
répondu Droid_Mechanic 2016-12-21 15:19:08
Drawable myDrawable = getResources().getDrawable(R.drawable.anImage);
Bitmap anImage      = ((BitmapDrawable) myDrawable).getBitmap();

Il peut Aussi être défini dans un fichier XML <bitmap> élément.

23
répondu hakiko 2017-03-23 15:30:21

voici le morceau de code, juste le vérifier:

Bitmap Icon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
6
répondu Nipun Gogia 2013-03-06 19:12:57

direct:

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

Vous pouvez configurer le bitmap plus si vous le définissez .xml drawable du fichier :

<?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"] />
6
répondu Mahmoud Shahoud 2015-01-29 08:48:30
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(),
            R.drawable.ic_launcher);

où mContext est le contexte de votre activité.

5
répondu Rakesh 2015-02-06 09:31:18