Jak ustawić bitmapę z zasobu

279

Wydaje się to proste, próbuję ustawić obraz bitmapowy, ale z zasobów mam go w aplikacji w folderze do rysowania.

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

Czy to jest poprawne?

Początkujący
źródło

Odpowiedzi:

756

Zakładając, że nazywasz to klasą aktywności

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

Pierwszy parametr, Zasoby, jest wymagany. Zwykle można go uzyskać w dowolnym kontekście (i podklasach takich jak działanie).

Xandy
źródło
1
Dostaję zerową wartość bitmapy, czy możesz mi powiedzieć, dlaczego otrzymuję zerową wartość
gautam,
tak, otrzymuję ten sam problem, zerowa wartość mapy bitowej.
Er.Rohit Sharma
3
Mam problem. Próbowałem przekonwertować wektor do rysowania na mapę bitową. Oto kod do konwersji wektora rysowalnego na mapę bitową.
Er.Rohit Sharma
Jeśli nie dzwonisz z klasy Activity (np. Jeśli dzwonisz z klasy danych), możesz spróbować: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy
36

Spróbuj tego

To jest z sdcard

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

To pochodzi z zasobów

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
Parag Chauhan
źródło
7

Jeśli zasób jest wyświetlany i jest widokiem, możesz go również przechwycić. Jak zrzut ekranu:

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

To faktycznie obejmuje cały układ, ale możesz go zmieniać, jak chcesz.

trgraglia
źródło
2

Jeśli zadeklarowałeś obiekt bitmapowy i chcesz go wyświetlić lub zapisać ten obiekt bitmapowy. ale najpierw musisz przypisać dowolny obraz i możesz użyć zdarzenia kliknięcia przycisku, ten kod pokaże tylko, jak przechowywać obraz do rysowania w obiekcie bitmapy.

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

Teraz możesz użyć tego obiektu bitmapowego, niezależnie od tego, czy chcesz go zapisać, czy użyć go w mapach Google podczas rysowania obrazu na stałej szerokości i długości geograficznej, lub użyć innego miejsca

Pir Fahim Shah
źródło
0

po prostu zastąp tę linię

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

z

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

Mam na myśli po prostu zmień wartość null za pomocą getResources () Jeśli używasz tego kodu w dowolnym przycisku lub widoku obrazu, kliknij zdarzenie, po prostu dołącz getApplicationContext () przed getResources () ..

Ravi Makvana
źródło
0

Za pomocą tej funkcji można uzyskać bitmapę obrazu. Po prostu podaj adres URL obrazu

 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
źródło