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
Vous devez vous connecter pour publier un commentaire.
J'avais besoin de faire quelque chose comme ça à une époque, et j'ai trouvé ce post sur les Canaux de Couleur beaucoup éclairant.
(Mais j'ai peur que ce soit lié à ce que vous avez décrit dans votre "PS")
Lien ci-dessus dans archive.org, grâce à @1j01
Le lien n'est PAS trouvé, bro. Veuillez mettre à jour!
Wayback Machine lien: web.archive.org/web/20150310155646/http://kevindion.com/2011/01/...
OriginalL'auteur Marcelo Assis
J'ai été la mise en œuvre de filtres photo similaire à ce que l'application iOS qui est le nôtre. Ils le font quelque chose comme
source bitmap + mask bitmap + blend mode + alpha value
. Pour obtenir un comportement identique je viens de l'augmentation de l'alpha de masque. Voici ce que mon code enfin l'air:Noter que jniBlend est une méthode que j'ai écrit sur le mien, il se comporte comme les actions PorterDuff modes de Java.
Méthode
makeTransparent
n'est pas le mien - trouvé ici: (réponse de Ruban)OriginalL'auteur Den Rimus
Le code n'est pas complet. c'est juste pour vous donner une idée de sorte que vous pouvez utiliser le rendu de script pour mélanger une image
OriginalL'auteur anas abubakar