我試圖將兩個圖像與Android混合在一起,使用類似Multiply的混合模式。將兩個圖像與乘法和不透明度混合在一起
// 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
未找到鏈接,兄弟。請更新! –