私は、Multiplyのようなブレンドモードを使用して、Androidと一緒に2つの画像をブレンドしようとしています。2つの画像を乗算と%opacityとブレンドする
// Prepare -------------------------------
// Create source images
Bitmap img1 = ...
Bitmap img2 = ...
// Create result image
Bitmap result = ...
Canvas canvas = new Canvas();
canvas.setBitmap(result);
// Get proper display reference
BitmapDrawable drawable = new BitmapDrawable(getResources(), result);
ImageView imageView = (ImageView)findViewById(R.id.imageBlend1);
imageView.setImageDrawable(drawable);
// Apply -------------------------------
// Draw base
canvas.drawBitmap(img1, 0, 0, null);
// Draw overlay
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));
paint.setShader(new BitmapShader(img2, TileMode.CLAMP, TileMode.CLAMP));
canvas.drawRect(0, 0, img2.getWidth(), img2.getHeight(), paint);
これは動作しますが、私が行われ、乗算の「量」を制御持っていない - それは、常に完全な乗算転送ですが。理想的には、0%の乗算は基本画像(img1)と同じで変更はありませんが、100%の乗算は上記のコードで得られる結果になります。
paint.setAlpha()
はこれでは機能しないようです。
新しい「レイヤー」の%不透明度を設定する他の方法はありますか?
P.S.私は、白色に色をあらかじめ乗算してオフセットすることによって(LightingColorFilter
を使用して)このような乗算を行ういくつかの方法がありますが、それは多重モードに非常に特有です。不透明度を適用する方法を見つけようとしています/他のすべての転送モードにも影響します。
Valeu rapazしかし、ええ、記事はすばらしいですが、各モードの入力値の%を変更する方法ではなく、レイヤーを異なるモードで貼り付けるだけです。それは画像からそれらを読み込んだ後のピクセルのいくつかの直接操作を示しているので、おそらくそれは別のものです。私はそれを調べる必要があります。今のところ、ありがとう! – zeh
リンクが見つかりません。更新してください! –