В зависимости от того, чего вы хотите достичь, есть несколько способов.
Во-первых, Если вы просто хотите отобразить изображение с цветом для прозрачности, вам не нужен холст. Вы можете просто добавить стили CSS к изображению:
<img src="theURL" style="background-color: red;">
Допустим, вы хотите холст.Самый эффективный способ - сначала нарисовать цвет, а затем изображение.
Другой способ - нарисовать изображение на холсте, установить для globalcompositeOperateion значение destination-over, а затем заполнить область изображения.с нужным цветом.
ctx.drawImage(img,0,0);
ctx.globalCompositeOperation = 'destination-over'
ctx.fillStyle = 'blue';
ctx.fillRect(0,0,280,210); // if the width and height are 280x210
Смотрите его в действии здесь, заменив прозрачный фон синим:
http://jsfiddle.net/MEHbr/327/
Я бы не советовал использовать getImageData
и putImageData
, если вам не нужен точный контроль за пикселями, так как они намного медленнее.
Для сохранения изображения, canvas2Image предлагает лучшие варианты:
http://www.nihilogic.dk/labs/canvas2image/