Если вы просто хотите наложить одно изображение поверх другого, вы, вероятно, захотите сделать что-то вроде этого:
ctx.drawImage(image1, x, y);
// adjust globalAlpha as needed, or skip if the image has its own transparency
ctx.globalAlpha = 0.5;
ctx.drawImage(image2, x, y);
ИЛИ, в зависимости от конкретного эффекта, который вам нужен:
ctx.drawImage(image1, x, y);
ctx.globalCompositeOperation = "lighten"; // many other possibilities here
ctx.drawImage(image2, x, y);
Вероятно, это будет быстрее, чем рисование попиксельно с помощью методов get / putImageData, хотя и в зависимости от того, насколько браузер зависит.