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?

Anfänger
quelle

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.

xandy
quelle
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);
Parag Chauhan
quelle
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.

trgraglia
quelle
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

Pir Fahim Shah
quelle
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.

Ravi Makvana
quelle
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;
      }
 }
pavel
quelle