J'essayais de joindre des images de Drawable à un e-mail (de mon application à l'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 je joins l'image à l'e-mail, je reçois la pièce jointe sans l'extension ".png" et c'est un gros problème.
Donc, je pense que pour 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 l'image définie dans la pièce jointe.
Si c'est possible, quelqu'un peut-il me dire comment le 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).
Il existe 3 façons d'effectuer la conversion:
Définissez ImageView
avec resource image
imageView.setImageResource(R.drawable.icon);
puis récupérez le bitmap depuis imageView
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
Obtenez la ressource à dessiner directement par Resource ID
Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.profile_circle);
Définissez l'image sur ImageView
puis convertissez-la en Bitmap
(fonctionne également pour svg/VectorDrawable)
ImageView imgView = (ImageView) findViewById(R.id.ImageView);
imgView.setImageResource(R.drawable.abc_image);
z.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
Drawable myDrawable = getResources().getDrawable(R.drawable.anImage);
Bitmap anImage = ((BitmapDrawable) myDrawable).getBitmap();
Il peut également être défini dans un fichier XML avec le <bitmap>
élément.
voici le morceau de code, il suffit de le vérifier:
Bitmap Icon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.ic_launcher);
Où mContext est votre Contexte d'activité.
La manière directe est:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
Vous pouvez configurer davantage le bitmap si vous le définissez dans un fichier dessinable .xml comme:
<?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"] />
public Bitmap convertToBitmap(Drawable drawable, int widthPixels, int heightPixels) {
Bitmap mutableBitmap = Bitmap.createBitmap(widthPixels, heightPixels, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mutableBitmap);
drawable.setBounds(0, 0, widthPixels, heightPixels);
drawable.draw(canvas);
return mutableBitmap;
}
de https://msol.io/blog/Android/android-convert-drawable-to-bitmap/ a fonctionné pour moi.