Como definir um bitmap de recurso

278

Isso parece simples, estou tentando definir uma imagem de bitmap, mas com os recursos, tenho dentro do aplicativo na pasta drawable.

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

Isso está correto?

Principiante
fonte

Respostas:

755

Supondo que você esteja chamando isso em uma classe Activity

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

O primeiro parâmetro, Recursos, é necessário. É normalmente obtido em qualquer contexto (e subclasses como Activity).

xandy
fonte
1
Eu estou recebendo o valor nulo de bitmap, u pode dizer-me por que eu estou recebendo nulo
gautam
Sim, estou recebendo o mesmo problema, valor nulo do bitmap.
Er.Rohit Sharma
3
Eu entendi o problema. Eu estava tentando converter vector drawable em bitmap. Então, aqui está o bacalhau para converter o vetor drawable em bitmap.
Er.Rohit Sharma
Se não estiver chamando de uma classe Activity (por exemplo, se chamado de uma classe de dados), tente: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy
36

Tente isto

Isso é do sdcard

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

Isto é de recursos

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

Se o recurso estiver sendo exibido e for uma visualização, você também poderá capturá-lo. Como uma captura de tela:

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

Isso realmente agarra todo o layout, mas você pode alterar conforme desejar.

trgraglia
fonte
2

Se você declarou um objeto de bitmap e deseja exibi-lo ou armazenar esse objeto de bitmap. mas primeiro é necessário atribuir qualquer imagem e você pode usar o evento click no botão, esse código demonstrará apenas como armazenar a imagem desenhável no objeto bitmap.

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

Agora você pode usar esse objeto de bitmap, se deseja armazená-lo ou usá-lo no google maps enquanto desenha uma imagem em latitude e longitude fixa, ou usar alguns onde mais

Pir Fahim Shah
fonte
0

apenas substitua esta linha

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

com

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

Quero dizer, basta alterar o valor nulo com getResources () Se você usar esse código em qualquer botão ou no evento Image view click, basta anexar getApplicationContext () antes de getResources () ..

Ravi Makvana
fonte
0

Usando esta função, você pode obter o Bitmap de imagem. Basta passar o URL da imagem

 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
fonte