次の画像があります。
ここで、実行時にこの画像をさまざまな色にフィルター処理したいと思います。たとえば、下の部分が濃い緑で、左上の部分が明るい緑である緑のバージョンを生成できるようにしたいと考えています。
これどうやってするの?これは可能ですか?
次のようにビットマップをフィルタリングしてみました。
private static Bitmap applyColorFilter(Bitmap source, int color) {
Bitmap empty = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight());
Canvas c = new Canvas(empty);
Paint p = new Paint();
PorterDuffColorFilter pdcf = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN);
p.setColorFilter(pcdf);
c.drawBitmap(empty, 0, 0, p);
source.recycle();
return empty;
}
すべてのを試しPorterDuff.Mode
ましたが、どれも実際には機能しません。ときどき (例: SRC_IN) 円が完全に新しい色で塗りつぶされ、陰影がまったくないことがあります。それ以外の場合は、正方形が表示されます。
色自体を持たないソース イメージを生成し、そのシェーディングをアルファ チャネルでレンダリングすることを考えました。しかし、それがうまくいくかどうかはわかりません。結果の画像を完全に不透明にしたい(上に表示されている外側の影を除く)。