So legen Sie eine Bitmap aus einer Ressource fest


278

Dies scheint einfach zu sein. Ich versuche, ein Bitmap-Image festzulegen, aber aus den Ressourcen habe ich in der Anwendung im Zeichenordner.

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

Ist das richtig?

Antworten:


755

Angenommen, Sie rufen dies in einer Aktivitätsklasse auf

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

Der erste Parameter, Ressourcen, ist erforderlich. Es ist normalerweise in jedem Kontext (und in Unterklassen wie Aktivität) erhältlich.


1
Ich erhalte Nullwert von Bitmap, u kann mir sagen , warum ich bin immer null
gautam

Ja, ich bekomme das gleiche Problem, Nullwert der Bitmap.
Er.Rohit Sharma

3
Ich habe das Problem. Ich habe versucht, Vektor-Drawable in Bitmap zu konvertieren. Hier ist also der Kabeljau zum Konvertieren eines zeichnerfähigen Vektors in eine Bitmap.
Er.Rohit Sharma

Wenn Sie nicht von einer Aktivitätsklasse aufrufen (z. B. wenn Sie von einer Datenklasse aufgerufen werden), können Sie Folgendes versuchen: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy

36

Versuche dies

Dies ist von SD-Karte

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

Dies ist aus Ressourcen

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

7

Wenn die Ressource angezeigt wird und eine Ansicht ist, können Sie sie auch erfassen. Wie ein Screenshot:

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

Dies erfasst tatsächlich das gesamte Layout, aber Sie können es nach Belieben ändern.


2

Wenn Sie ein Bitmap-Objekt deklariert haben und es anzeigen oder dieses Bitmap-Objekt speichern möchten. Aber zuerst müssen Sie ein Bild zuweisen, und Sie können das Schaltflächenklickereignis verwenden. Dieser Code zeigt nur, wie das zeichnbare Bild in einem Bitmap-Objekt gespeichert wird.

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

Jetzt können Sie dieses Bitmap-Objekt verwenden, unabhängig davon, ob Sie es speichern oder in Google Maps verwenden möchten, während Sie ein Bild auf einem festen Breiten- und Längengrad zeichnen, oder woanders


0

Ersetzen Sie einfach diese Leitung

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

mit

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

Ich möchte sagen, ändern Sie einfach den Nullwert mit getResources (). Wenn Sie diesen Code in einer Schaltfläche oder einem Klickereignis für die Bildansicht verwenden, fügen Sie einfach getApplicationContext () vor getResources () hinzu.


0

Mit dieser Funktion können Sie Image Bitmap erhalten. Übergeben Sie einfach die Bild-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;
      }
 }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.