1

この例の画像のように、ビットマップの白い背景色を削除したいと思います。

これは私の最初の試みです:

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

2回目の試行

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を使用する必要があるというヒントがありました。

ヒント2Androidのビットマップには、Bitmap.Config列挙型を使用するAPIレベル1以降、透明度を表示するオプションがあることが判明しました。Androidのドキュメントでこのリンクを確認してください。

ここに画像の説明を入力してください

4

1 に答える 1