【问题标题】:How to set a bitmap from resource如何从资源中设置位图
【发布时间】:2011-06-24 17:24:35
【问题描述】:

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

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

这是正确的吗?

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    假设您在 Activity 类中调用它

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

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

    【讨论】:

    • 我得到位图的空值,你能告诉我为什么我得到空值
    • 是的,我遇到了同样的问题,位图的值为空。
    • 我遇到了问题。我试图将矢量可绘制转换为位图。所以这里是将矢量可绘制转换为位图的代码。
    • 如果 not 从 Activity 类调用(例如,如果从数据类调用),您可以尝试: val myBitmap = BitmapFactory.decodeResource(Resources.getSystem(), R .drawable.your_image)
    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

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

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

      这实际上抓取了整个布局,但您可以随意更改。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          只需替换这一行

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

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

          我的意思是用 getResources() 改变 null 值

          【讨论】:

            【解决方案6】:

            使用这个函数可以获得Image Bitmap。只需传递图片网址

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

            【讨论】:

              猜你喜欢
              • 2022-01-24
              • 1970-01-01
              • 2014-03-10
              • 2014-07-06
              • 2017-05-19
              • 1970-01-01
              • 1970-01-01
              • 2017-04-27
              • 2014-01-28
              相关资源
              最近更新 更多