HTML5 Canvas:为图像着色

xpe*_*int 2 html colorize canvas html5-canvas

我想更改图像/画布的颜色。我现有的代码:

var loader = new PxLoader()
var image = loader.addImage('images/balloon.png')
loader.addCompletionListener(functio() {
  var canvas = $("<canvas>").attr("width", "200").attr("height", "200");
  var context = canvas[0].getContext('2d');
  context.clearRect(0, 0, 200, 200);
  context.drawImage(image, 0, 0);
  // colorize??????
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能给它着色 - 进一步操纵上下文(如果可能的话,我想使用 Pixastic.process)?

ale*_*lex 5

如果着色是指改变背景颜色,那么使用......

context.fillColor = '#f0f';

context.fillRect(0, 0, canvas.attr('width'), canvas.attr('height'));
Run Code Online (Sandbox Code Playgroud)

如果您想给颜色上色,请尝试...

var data = ctx.getImageData(0, 0, canvas.attr('width'), canvas.attr('height'));

for (var i = 0, length = data.data.length; i < length; i += 4) {
    data.data[i] = Math.max(255, data.data[i]);
}

context.putImageData(data, 0, 0);
Run Code Online (Sandbox Code Playgroud)

js小提琴

这将使每个像素的红色值最大化。尝试一下以获得您想要的效果。

  • @alex 顺便说一句,我没有得到这个 `Math.max(255, data.data[i])`。我猜它总是会返回 255 那么为什么要使用这个函数呢?为什么不简单地使用“data.data[i] = 255”呢? (2认同)