Canvas: маскировать изображение и сохранять его альфа-канал?

Вот что я пытаюсь сделать:

  1. Получите изображение A и изображение B. Изображение B - это черно-белое изображение-маска.
  2. Замените альфа-канал изображения A на красный канал изображения B.
  3. Нарисуйте на холсте изображение C.
  4. Нарисуйте изображение A поверх изображения C.

Все выглядит нормально до шага 4. Изображение C совсем не видно, а там, где изображение A должно быть прозрачным, находится белый цвет.

cx.putImageData(imageA, 0, 0);
var resultData = cx.getImageData(0, 0, view.width, view.height);

for (var h=0; h<resultData.data.length; h+=4) {
    resultData.data[h+3] = imageB.data[h];
}

cx.putImageData(imageC, 0, 0);
cx.putImageData(resultData, 0, 0);
12
задан ellisbben 27 January 2012 в 19:03
поделиться