[英]How to set a bitmap from resource
这看起来很简单,我正在尝试设置位图图像,但是从资源中,我在 drawable 文件夹中的应用程序中。
bm = BitmapFactory.decodeResource(null, R.id.image);
这是正确的吗?
假设您在 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
);
现在你可以使用这个位图对象,无论你是想存储它,还是在谷歌地图中使用它,同时在固定的经纬度上绘制图片,或者在其他地方使用
只需更换这一行
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.