【问题标题】:LayerDrawable to bitmapLayerDrawable 到位图
【发布时间】:2011-05-05 07:52:36
【问题描述】:

我正在使用 LayerDrawable 来合并多个 Drawable。现在,我想将我的 LayerDrawable 导出到一个文件中。

我试过这种方式:

Bitmap b = ((BitmapDrawable)myLayerDrawable).getBitmap();
--> ClassCastException...

我能做什么?

【问题讨论】:

    标签: android bitmap drawable


    【解决方案1】:

    您是否尝试过将 Drawable 绘制到位图画布上?我认为调用顺序类似于:

    Bitmap b = Bitmap.createBitmap(int width, int height, Bitmap.Config config);
    myLayerDrawable.draw(new Canvas(b));
    

    然后您可以将 Bitmap 对象写入输出流。

    【讨论】:

    • 谢谢。我认为有些问题:W=550,H=550,config=ARGB_8888,我最终得到位图 b 的 W & H = -1。如果我将它导出到文件中,图片大小合适但完全空白......
    • 尝试在 Drawable 上调用 setBounds。如果你不告诉它要画什么,它就不会画任何东西。
    • 谢谢!我终于发现了为什么我从来没有能够用 Bitmap.createBitmap 做点什么:)
    【解决方案2】:

    感谢两位用户在我之前回答(@Kyle P@Anjum Shrimali)。受到他们回答的启发......这对我的情况很好:

    final int width = myLayerDrawable.getIntrinsicWidth();
    final int height = myLayerDrawable.getIntrinsicHeight();
    
    final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    myLayerDrawable.setBounds(0, 0, width, height);
    myLayerDrawable.draw(new Canvas(bitmap));
    

    【讨论】:

      【解决方案3】:

      感谢您的帮助。但是像我这样的初学者需要一些更具体的代码。我尝试了以下方法,它对我有用。

      Bitmap b = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
      layerDrawable.setBounds(0, 0, getWidth(), getHeight());
      layerDrawable.draw(new Canvas(b));
      

      最终,b(位图)是所需的组合位图。

      【讨论】:

        【解决方案4】:

        如果有人想要 @Mir-Ismaili 答案的 kotlin 版本

        val height = layerDrawable.intrinsicHeight
        val width = layerDrawable.intrinsicWidth
        val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
        layerDrawable.setBounds(0, 0, width, height)
        layerDrawable.draw(Canvas(bitmap))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-26
          • 2013-06-21
          • 1970-01-01
          • 2017-06-21
          • 2017-09-12
          • 2013-12-05
          • 1970-01-01
          • 2016-05-04
          相关资源
          最近更新 更多