我必须在画布对象上加载图像,单击一些按钮或滑动一些滑块后,我需要更改此画布上的一些像素。到目前为止,这就是我的代码:
function CanvasImage(element, src) {
var width, height;
var canvas = document.getElementById(element);
var ctx = canvas.getContext("2d");
var img = new Image;
img.onload = function () {
width = canvas.width = img.width;
height = canvas.height = img.width;
ctx.drawImage(img, 0, 0, width, height)
};
img.src = src;
this.brightness = function (amount) {
var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
var data = imgData.data;
for (var i = 0; i < data.length; i += 4) {
data[i] += amount;
data[i + 1] += amount;
data[i + 2] += amount
}
imgData.data = data;
ctx.putImageData(imgData, 0, 0)
};
this.transform = function (data) {
ctx.save();
this.brightness(data.brightness);
ctx.restore()
}
}
那就是我刚刚添加了操纵图像亮度的功能。一开始,图像被加载到画布元素中。这对我来说很好。功能亮度只是将给定量添加到像素。这也有效。我认为我的问题是转换功能。我保存画布上下文的状态并调用我的转换函数。在这个操作之后,我恢复了状态。我会说,上下文应该看起来像之前加载的图像。
我现在的问题是,在更改滑块并将其恢复到原始状态后,我的图像仍然更亮或更暗,并且没有图像的原始状态。请问您对我有什么建议吗?
我感谢每一个答案。:D