この例の画像のように、ビットマップの白い背景色を削除したいと思います。
これは私の最初の試みです:
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のドキュメントでこのリンクを確認してください。