如何从资源中设置位图

这看起来很简单,我试图设置一个位图图像,但从资源,我在应用程序中的绘图文件夹。

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

它是否正确?

假设你在一个Activity类中调用它

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

第一个参数,资源,是必需的。 它通常可以在任何上下文(和子类如Activity)中获得。

尝试这个

这是从SD卡

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

如果资源正在显示并且是视图,则还可以捕获该资源。 像屏幕截图一样:

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

这实际上抓住了整个布局,但你可以随意改变。

如果你已经声明了一个位图对象,并且你想显示它或者存储这个位图对象。 但首先你必须指定任何图像,并且你可以使用button点击事件,这段代码将只演示如何将可绘制图像存储在位图Object中。

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

现在你可以使用这个位图对象,无论你想存储它,还是在谷歌地图中使用它,同时在固定的经度和纬度上绘制图片,或者使用其他位置

当我想为我的View设置一个位图时,我发现了这个问题。 出于这个原因,我发现这个代码更有帮助:

 myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey)); 

从这里

只要更换这一行

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

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

我的意思是说,只是用getResources()更改空值如果您在任何button或图像视图单击事件中使用此代码只需在getResources()之前附加getApplicationContext()..