如何从资源中设置位图

时间:2011-02-10 09:23:46

标签: android bitmap

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

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

这是对的吗?

6 个答案:

答案 0 :(得分:714)

假设您在Activity类中调用它

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

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

答案 1 :(得分:30)

试试这个

这是来自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);

答案 2 :(得分:7)

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

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

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

答案 3 :(得分:1)

如果您声明了一个位图对象,并且想要显示它或存储此位图对象。但首先你必须分配任何图像,并且你可以使用按钮点击事件,这段代码只会演示如何将可绘制图像存储在位图对象中。

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

现在您可以使用此位图对象,无论您是要存储它,还是在谷歌地图中使用它同时在固定纬度和经度上绘制图片,或者使用其他地方

答案 4 :(得分:0)

只需替换此行

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

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

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

答案 5 :(得分:0)

使用此功能,您可以获取图像位图。只需传递图片网址

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