Cara mengatur bitmap dari sumber daya

280

Ini tampaknya sederhana, saya mencoba untuk mengatur gambar bitmap tetapi dari sumber daya, saya memiliki dalam aplikasi di folder yang dapat digambar.

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

Apakah ini benar?

Pemula
sumber

Jawaban:

757

Dengan asumsi Anda memanggil ini di kelas Activity

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

Parameter pertama, Sumber Daya, diperlukan. Biasanya diperoleh dalam Konteks apa pun (dan subkelas seperti Aktivitas).

xandy
sumber
1
Saya mendapatkan nilai null dari bitmap, dapatkah Anda mengatakan kepada saya mengapa saya mendapatkan null
gautam
ya saya mendapatkan masalah yang sama, nilai null dari bitmap.
Er.Rohit Sharma
3
Saya punya masalah. Saya mencoba untuk mengubah gambar vektor menjadi bitmap. Jadi di sini adalah cod untuk mengubah gambar vektor menjadi bitmap.
Er.Rohit Sharma
Jika tidak menelepon dari kelas Activity (misalnya, jika dipanggil dari kelas data) Anda dapat mencoba: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy
36

Coba ini

Ini dari sdcard

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

Ini dari sumber daya

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
Parag Chauhan
sumber
7

Jika sumber daya ditampilkan dan dilihat, Anda juga dapat menangkapnya. Seperti tangkapan layar:

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

Ini sebenarnya mengambil seluruh tata letak tetapi Anda dapat mengubah sesuai keinginan.

trgraglia
sumber
2

Jika Anda telah mendeklarasikan objek bitmap dan Anda ingin menampilkannya atau menyimpan objek bitmap ini. tetapi pertama-tama Anda harus menetapkan gambar apa pun, dan Anda dapat menggunakan acara klik tombol, kode ini hanya akan menunjukkan bahwa cara menyimpan gambar yang dapat digambar dalam Objek bitmap.

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

Sekarang Anda dapat menggunakan objek bitmap ini, apakah Anda ingin menyimpannya, atau menggunakannya di google maps sambil menggambar pic pada lintang dan bujur tetap, atau menggunakan beberapa tempat lain

Pir Fahim Shah
sumber
0

ganti saja baris ini

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

dengan

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

Maksud saya katakan, ubah saja nilai nol dengan getResources () Jika Anda menggunakan kode ini di sembarang tombol atau acara klik tampilan Gambar, tambahkan saja getApplicationContext () sebelum getResources () ..

Ravi Makvana
sumber
0

Dengan menggunakan fungsi ini Anda bisa mendapatkan Bitmap Gambar. Lewati url gambar

 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;
      }
 }
pavel
sumber