这似乎很简单,我正在尝试设置一张来自应用程序中可绘制文件夹内资源的位图图像。
bm = BitmapFactory.decodeResource(null, R.id.image);
这是否正确?
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
第一个参数Resources是必需的。通常可以在任何上下文(包括活动等子类)中获取。
试试这个
这是来自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);
如果资源正在显示并且是一个视图,您也可以捕获它。就像截屏一样:
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);
实际上,这会获取整个布局,但您可以根据需要进行更改。
如果您已经声明了一个位图对象并且想要显示或存储该位图对象,但首先必须分配任何图像,并可以使用按钮单击事件,此代码仅演示如何将可绘制的图像存储在位图对象中。
Bitmap contact_pic = BitmapFactory.decodeResource(
v.getContext().getResources(),
R.drawable.android_logo
);
只需替换此行
bm = BitmapFactory.decodeResource(null, R.id.image);
使用
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.YourImageName);
我的意思是说,只需将null值更改为getResources()。如果您在任何按钮或ImageView点击事件中使用此代码,请在getResources()之前附加getApplicationContext()。
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;
}
}