我写了一些代码,可以将tablelayout转换为bitmap.everythink工作完美但是,我的位图有黑色背景 这是我的源代码
public Bitmap sendMyData(TableLayout view) {
Bitmap bitmap = null;
ByteArrayOutputStream bbb = new ByteArrayOutputStream();
view.setDrawingCacheEnabled(true);
view.layout(0, 0, view.getWidth(), view.getHeight());
view.buildDrawingCache(true);
bitmap = Bitmap.createBitmap(view.getDrawingCache());
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bbb);
view.setDrawingCacheEnabled(false);
return bitmap;
}
我的代码出了什么问题?为什么我的位图有黑色背景? 如果有人知道解决方案,请帮助我 感谢
答案 0 :(得分:7)
JPEG 格式必须具有背景色。因此,当您将 PNG 图片或图标转换为 JPEG 时,请替换透明背景< / strong>黑色。
将其转换为PNG。 bitmap.compress(Bitmap.CompressFormat.PNG,100, BBB);
答案 1 :(得分:2)
尝试
Bitmap.createBitmap(Bitmap.CompressFormat.PNG, 100, bbb, Bitmap.Config.ARGB_8888);
答案 2 :(得分:1)
您可能已经找到了这个问题的答案,但仅仅是为了那些仍在寻找答案的人的利益,就在这里。
JPEG显然比PNG提供更好的压缩和更小的图像尺寸。在优化网络,存储和图像加载事务中需要小尺寸。但是,当您将视图另存为JPEG时,透明背景默认为&#34;黑色&#34;颜色。因此,如果您希望它是任何其他颜色(包括白色),您必须使用布局的XML中的以下代码将视图的背景设置为该颜色
var content = $("<div>").attr({"class": "section-content", "id": "content",
"style": "max-height: 500px;overflow-y: scroll; padding-top:0;padding-
bottom:0;"}).appendTo(".Extrablox");
console.log("Adding content");
var textcont = $("<h1>").appendTo(".content");
console.log("Added content");
您必须在colors.xml中定义颜色,如下所示
android:background="@color/whiteColor"
这可以帮助您实现所需的压缩以及所需的视觉效果。所有最好的......
答案 3 :(得分:0)
JPEG格式不支持Alpha透明度,这就是将原始图像转换为JPEG时透明背景变黑的原因。
改为使用PNG格式
我在这里找到了它:Why Bitmap to Base64 String showing black background on webview in android?
答案 4 :(得分:0)
您应该将绘制颜色设置为白色,将字体颜色设置为黑色
canvas.drawColor(Color.WHITE);