【问题标题】:View.getDrawingCache() always return Black area in Bitmap for transparent PNG. Can we change Tranparent Black Area to White Color in Bitmap?View.getDrawingCache() 总是在位图中返回黑色区域以用于透明 PNG。我们可以将位图中的透明黑色区域更改为白色吗?
【发布时间】:2022-01-04 13:35:10
【问题描述】:

我有一个截屏方法,它从 XML 中获取视图并转换为位图对象,并且我在布局视图上有多个 PNG。一些PNG具有透明区域,在位图中显示为黑色(我想将其更改为白色)或想要摆脱黑色透明区域。

private void takescreenshot(LinearLayout preview) throws IOException
{
    View z  = preview;   // get whole layout view
    z.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(z.getDrawingCache());
    z.destroyDrawingCache();
}

【问题讨论】:

    标签: java android android-studio bitmap


    【解决方案1】:

    创建一个新的空白位图
    创建画布对象
    为画布填充背景
    将旧位图放入画布中。

    Bitmap newBitmap = Bitmap.create(bitmap.width,bitmap.height,ARGB_8888)
    Canvas canvas = new Canvas(newBitmap)
    canvas.drawColor(Color.white)
    canvas.drawBitmap(bitmap,0F,0F,null)
    

    【讨论】:

      【解决方案2】:

      最后我也想出了解决办法

      View z  = preview;   // get whole layout view
              z.setDrawingCacheEnabled(true);
              Bitmap bitmap = Bitmap.createBitmap(z.getDrawingCache());
              z.destroyDrawingCache();
      
      Bitmap newBitmap = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),ARGB_8888);
              newBitmap.eraseColor(Color.WHITE);
              Canvas canvas2 = new Canvas(newBitmap);
              canvas2.drawBitmap(bitmap,0F,0F,null);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-24
        • 2012-11-29
        • 2020-11-29
        • 2011-11-15
        相关资源
        最近更新 更多