Estoy tratando de combinar dos imágenes junto con Android, usando un modo de fusión tipo Multiplicar.Mezcla de dos imágenes junto con multiplicar y% de opacidad
// 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);
Esto funciona, pero no tienen control sobre la "cantidad" de multiplicar lo que se hace - es siempre una transferencia completa se multiplican. Idealmente, una multiplicación del 0% sería la misma que la imagen base (img1) sin ningún cambio, pero el resultado sería un 100% de multiplicación con el código anterior.
paint.setAlpha()
parece que no funciona para esto.
¿Alguna otra forma de establecer el% de opacidad de la nueva "capa"?
P.S. Hay algunos métodos para hacer que la multiplicación funcione con esto, supongo (utilizando un LightingColorFilter
) multiplicando previamente y desplazando el color a blanco, pero es muy específico del modo múltiple. Estoy tratando de encontrar una manera de aplicar la opacidad. % de los demás modos de transferencia también.
Valeu rapaz. Pero sí, el artículo es excelente, pero se trata más bien de unir capas con diferentes modos en lugar de tener una forma de cambiar el% de los valores de entrada para cada modo. Muestra cierta manipulación directa de los píxeles después de leerlos de la imagen, por lo que tal vez sea una alternativa. Tendré que investigar eso. Por ahora, gracias! – zeh
Enlace NO encontrado, hermano. ¡Por favor actualice! –