30

Drawable からメールに画像を添付しようとしていました (アプリから Gmail アプリへ)

次のコードを試しました:

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

しかし、画像を電子メールに添付すると、拡張子「.png」なしで添付され、大きな問題になります。

したがって、この Drawable 画像をビットマップに変換しようと考えています。また、ArrayList はビットマップでなければならないと思います。添付ファイルに画像が定義されている画像が得られると思います。

可能であれば、誰かがそれを行う方法を教えてもらえますか? ビットマップに変換し、Arraylist に追加して画像を添付します。

私が言ったことすべてが間違っている場合、誰かが私に解決策を教えてもらえますか? Drawable から拡張子 (.png) を付けてメールに画像を添付する必要があります。

4

9 に答える 9

58

変換を実行するには、次の 3 つの方法があります。

  1. ImageViewで設定resource image

    imageView.setImageResource(R.drawable.icon);
    

    次に、imageViewからビットマップを取得します

    Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
    
  2. ドローアブル リソースを直接取得するResource ID

    Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.profile_circle);
    
  3. に画像を設定してImageViewから変換しますBitmap(svg/VectorDrawableでも機能します)

    ImageView imgView = (ImageView) findViewById(R.id.ImageView);
    imgView.setImageResource(R.drawable.abc_image);
    z.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
    
于 2015-05-13T06:35:06.097 に答える
34
Drawable myDrawable = getResources().getDrawable(R.drawable.anImage);
Bitmap anImage      = ((BitmapDrawable) myDrawable).getBitmap();

また、<bitmap>要素を使用して XML ファイルで定義することもできます。

于 2013-03-06T19:03:38.133 に答える
9

これがコードの一部です。チェックしてください:

Bitmap Icon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
于 2013-03-06T19:12:57.787 に答える
6

直接的な方法は次のとおりです。

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

.xml ドローアブル ファイルで次のように定義すると、ビットマップをさらに構成できます。

<?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"] />
于 2015-01-29T08:48:30.773 に答える
6
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(),
            R.drawable.ic_launcher);

mContext はアクティビティ コンテキストです。

于 2015-02-06T09:31:18.630 に答える
0
    public Bitmap getBitmap(@DrawableRes final int resId) {
        Drawable drawable = getResources().getDrawable(resId);;
        Canvas canvas = new Canvas();
        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
                drawable.getIntrinsicHeight(),
                Bitmap.Config.ARGB_8888);
        canvas.setBitmap(bitmap);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        drawable.draw(canvas);
        return bitmap;
    }
于 2020-12-11T13:49:05.047 に答える