为什么Bitmap在android中显示黑色背景

时间:2015-07-24 11:05:34

标签: android android-layout android-canvas android-bitmap

我写了一些代码,可以将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;

}

我的代码出了什么问题?为什么我的位图有黑色背景? 如果有人知道解决方案,请帮助我 感谢

5 个答案:

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