1

我想像在这个示例图像中一样删除位图中的白色背景颜色。

这是我的第一次尝试

BitmapDrawable drawableImg = getImage();
drawableImg.setColorFilter(new PorterDuffColorFilter(Color.WHITE,
PorterDuff.Mode.DST_OUT));

第二次尝试

通过设置fromBgColor和toBgColor来删除白色范围,但是当我用android透明色替换颜色时,图像变成黑色,代码如下:

public static Bitmap getBitmapWithTransparentBG(Bitmap srcBitmap, 
       int fromBgColor, int toBgColor) {
    Bitmap result = srcBitmap.copy(Bitmap.Config.ARGB_8888, true);
    int nWidth = result.getWidth();
    int nHeight = result.getHeight();
    for (int y = 0; y < nHeight; ++y)
        for (int x = 0; x < nWidth; ++x) {
            int nPixelColor = result.getPixel(x, y);
            if (nPixelColor >= fromBgColor && nPixelColor <= toBgColor)
                result.setPixel(x, y, Color.TRANSPARENT);
        }
    return result;
}

提示我提示位图不支持透明位,我应该使用 PNG 或 Gif 代替位图,对吗?

提示 2事实证明,自 API 级别 1 以来,Android 中的位图使用 Bitmap.Config 枚举来显示透明度。在 Android 的文档中查看此链接

在此处输入图像描述

4

1 回答 1

0

你的形象下面是什么?也许这可能是一个布局问题。您是否尝试过在 xml 中设置 android:background="@android:color/transparent" ?我看到您尝试了 Android中描述的getBitmapWithTransparentBG:使背景图像中的特定(绿色)颜色透明 但是您是否也尝试过这个? 如何在 Android 中更改 Drawable 的颜色? 关于图像是 jpg 或 png,在加载并将其设置为 imageview(从中获取位图)之后,我已经设法使用两者,并且它允许使用上面引用的 getBitmapWithTransparentBG 函数设置透明度。

于 2014-04-07T12:33:39.583 回答