Смешивание двух изображений вместе с умножением и% непрозрачности

Я пытаюсь смешать два изображения вместе с 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 ) путем предварительного умножения и смещения цвета на белый, но это очень специфично для мультипликативного режима .. Я пытаюсь найти способ применить параметр непрозрачности /% и ко всем другим режимам передачи.

9
задан Den Rimus 6 January 2015 в 00:16
поделиться