リソースからビットマップを設定する方法


278

これは簡単に思えます、私はビットマップ画像を設定しようとしていますが、リソースから、アプリケーション内の描画可能なフォルダーにいます。

bm = BitmapFactory.decodeResource(null, R.id.image);

これは正しいです?

回答:


755

あなたがActivityクラスでこれを呼び出していると仮定します

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

最初のパラメーターであるResourcesは必須です。通常は、どのコンテキスト(およびActivityのようなサブクラス)でも取得できます。


1
ビットマップのnull値を取得しています。なぜnullを取得しているのか教えてください
gautam

はい、同じ問題、ビットマップのnull値を取得しています。
Er.Rohit Sharma

3
問題が発生しました。ベクタードローアブルをビットマップに変換しようとしていました。これがベクタードローアブルをビットマップに変換するタラです。
Er.Rohit Sharma

もしないあなたが試みることができる(例えば、データクラスから呼び出された場合)Activityクラスから呼び出します。val = myBitmap BitmapFactory.decodeResource(Resources.getSystem()、R.drawable.your_image)<-Kotlin
Bikeboy

36

これを試して

これはSDカードからです

ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/test2.png");
image.setImageBitmap(bMap);

これはリソースからのものです

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

7

リソースが表示されていてビューの場合は、それをキャプチャすることもできます。スクリーンショットのように:

View rootView = ((View) findViewById(R.id.yourView)).getRootView();
rootView.setDrawingCacheEnabled(true);
rootView.layout(0, 0, rootView.getWidth(), rootView.getHeight());
rootView.buildDrawingCache();

Bitmap bm = Bitmap.createBitmap(rootView.getDrawingCache());

rootView.setDrawingCacheEnabled(false);

これは実際にはレイアウト全体を取得しますが、必要に応じて変更できます。


2

ビットマップオブジェクトを宣言し、それを表示するか、このビットマップオブジェクトを保存する場合。ただし、最初に画像を割り当てる必要があり、ボタンクリックイベントを使用できます。このコードは、描画可能な画像をビットマップオブジェクトに格納する方法を示すだけです。

Bitmap contact_pic = BitmapFactory.decodeResource(
                           v.getContext().getResources(),
                           R.drawable.android_logo
                     );

これで、このビットマップオブジェクトを保存するか、固定の緯度と経度で画像を描画しながらGoogleマップで使用するか、他の場所で使用することができます。


0

この行を置き換えるだけです

bm = BitmapFactory.decodeResource(null, R.id.image);

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

つまり、getResources()でnull値を変更するだけです。このコードをボタンまたはイメージビューのクリックイベントで使用する場合は、getResources()の前にgetApplicationContext()を追加してください。


0

この関数を使用して、イメージビットマップを取得できます。画像のURLを渡すだけ

 public Bitmap getBitmapFromURL(String strURL) {
      try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
      } catch (IOException e) {
        e.printStackTrace();
        return null;
      }
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.