Answers:
假设您在Activity类中调用此方法
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
第一个参数,Resources是必需的。通常可以在任何Context(以及Activity等子类)中获得它。
试试这个
这是从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
);
现在,您可以使用此位图对象,无论是要存储它,还是在固定纬度和经度上绘制图片时在Google地图中使用它,或在其他位置使用它
只需替换这条线
bm = BitmapFactory.decodeResource(null, R.id.image);
与
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.YourImageName);
我的意思是说,只需使用getResources()更改空值即可。如果在任何按钮或图像视图单击事件中使用此代码,只需在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;
}
}