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?

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


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

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.


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


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 () ..


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;
      }
 }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.