这似乎很简单,我试图设置一个位图图像,但从资源,我在应用程序内的可绘制文件夹。

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

这对吗?


当前回答

把这条线替换掉

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

with

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

如果你在任何按钮或图像视图单击事件中使用此代码,只需在getResources()之前追加getApplicationContext() ..

其他回答

如果资源正在显示并且是一个视图,您也可以捕获它。截图如下:

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

这实际上抓住了整个布局,但你可以改变你想要的。

使用这个函数你可以得到图像位图。直接传递image 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;
      }
 }

试试这个

这是来自sdcard

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

这是来自资源

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

把这条线替换掉

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

with

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

如果你在任何按钮或图像视图单击事件中使用此代码,只需在getResources()之前追加getApplicationContext() ..

假设您在Activity类中调用此函数

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

第一个参数Resources是必需的。它通常可以在任何上下文(以及Activity之类的子类)中获得。