2017-12-09 20 views
0

私の目標は、ローリング中に1つの普通の背景色が無視されるゲームのタイルのように、特定の色をイメージ上に透明にすることです。私は、私が追加した画像上で特定の色を透明に設定する

  1. Draw a Bitmap on a Canvas replacing Black Pixels to Transparent
  2. Replacing a color in a Bitmap
  3. How to change colors of a Drawable in Android?
  4. Android: Make specific (green) color in background image transparent
  5. 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から特定の色を削除/無視することですが、すべての画像を透明にすることはありません。ゲームではアルファなしのタイルマップが使用されるため、アルファマスクを追加しない限り、それを実行する方法が必要です。

+0

https://www.spriters-resource.com/resources/sheets/20/21264.pngここに私が意味するものの例があります。オレンジの色は無視されます – JayJayAbrams

答えて

関連する問題