【问题标题】: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);