web-dev-qa-db-ja.com

Drawable画像をリソースからビットマップに変換する方法

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)のメールに画像を添付する必要があります。

23
Roberto Zuniga

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

  1. ImageViewresource 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());
    
50
Droid_Mechanic
Drawable myDrawable = getResources().getDrawable(R.drawable.anImage);
Bitmap anImage      = ((BitmapDrawable) myDrawable).getBitmap();

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

29
hakiko

ここにコードの一部があります、それをチェックしてください:

Bitmap Icon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
8
Nipun Gogia
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(),
            R.drawable.ic_launcher);

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

6
Rakesh

directの方法は次のとおりです。

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"] />
6
Mahmoud Shahoud
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;
}

from https://msol.io/blog/Android/android-convert-drawable-to-bitmap/ 私のために働いた。

0
Alon Bresler