我想像在这个示例图像中一样删除位图中的白色背景颜色。
这是我的第一次尝试:
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 的文档中查看此链接。