Le mélange de deux images avec de multiplier et de % d'opacité

Je suis en train d'essayer de mélanger deux images avec Android, à l'aide d'une Multipliez-comme mode de fusion.

//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);

Cela fonctionne, mais je n'ai pas de contrôle sur la "quantité" de multiplier ce qui est fait - c'est toujours un complet multiplier transfert. Idéalement, 0% de multiplier serait le même que l'image de base (img1), sans aucun changement, mais 100% de multiplier serait le résultat que j'obtiens avec le code ci-dessus.

paint.setAlpha() ne semble pas fonctionner pour ce.

Tout autre moyen de définir le % d'opacité de la nouvelle "couche"?

P. S. Il existe quelques méthodes pour faire de multiplier le travail avec ce que je suppose (à l'aide d'un LightingColorFilter) en pré-multipliant et la compensation de la couleur au blanc, mais c'est très spécifique à la multiplymode .. j'essaie de trouver un moyen d'appliquer l'opacité/% chose pour tous les autres modes de transfert de trop.

OriginalL'auteur zeh | 2011-10-12