私の目標は、ローリング中に1つの普通の背景色が無視されるゲームのタイルのように、特定の色をイメージ上に透明にすることです。私は、私が追加した画像上で特定の色を透明に設定する
- Draw a Bitmap on a Canvas replacing Black Pixels to Transparent
- Replacing a color in a Bitmap
- How to change colors of a Drawable in Android?
- Android: Make specific (green) color in background image transparent
- Android how to apply mask on ImageView?
コードを読んで何
画像が変更可能な作りの.java
ImageView log = (ImageView) findViewById(R.id.iconLogo);
int col = ResourcesCompat.getColor(getResources(), R.color.colorTrans, null);
log.getDrawable().mutate().setColorFilter(col, PorterDuff.Mode.SRC_IN);
//log.getDrawable().setColorFilter(col, PorterDuff.Mode.SRC_IN); //take2
//log.setColorFilter(R.color.colorTrans, PorterDuff.Mode.SRC_IN); //take3
はより良い結果を提供するデフォルトにするが、それでも画像からR.color.colorTrans
を減算しません。全体的にフィルタを使用して再生した後、全体の画像の上にフィルタとして機能しているように見えます。したがって、設定された色は検索されず、使用されているモードによらず常に色が表示され、除外されません。唯一の600×600ピクセルのPNGファイルを使用し
第オプション
public static Bitmap getBitmapWithTransparentBG(Bitmap srcBitmap, int BgColor) {
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 == BgColor)
result.setPixel(x, y, Color.TRANSPARENT);
}
return result;
}
はまた、それが特定の色を除去しない8-12sする1-2Sからアプリケーションのロード時間を増加させます。したがって、複数のigamesでは使用できません。
私がもう一度必要とするのは、ImageViewのImageから特定の色を削除/無視することですが、すべての画像を透明にすることはありません。ゲームではアルファなしのタイルマップが使用されるため、アルファマスクを追加しない限り、それを実行する方法が必要です。
https://www.spriters-resource.com/resources/sheets/20/21264.pngここに私が意味するものの例があります。オレンジの色は無視されます – JayJayAbrams