1

面对这样的问题。需要实现校正级别的能力,如在 Photoshop 中:

http://www.atpm.com/13.04/images/photoshop-05-levels.png

问题是这样的:图像的每个像素都有所有的数据,有用户输入的数据InputWhite,InputBlack,OutputWhite,OutputBlack。(如图所示)。

我需要专门为每个像素(RGB)更改每 3 个通道。

我怎样才能改变他们的?我无法理解。提前致谢。

4

1 回答 1

0

您可以随意使用imageData画布的 来修改单个像素的 RGB 值。

例如,要“增加”所有像素的绿色“通道”,您可以这样做,这会将每个像素的 RGB 中每个 G 的值加 30:

var imageData = ctx.getImageData(0,0,can.width, can.height);
var pixels = imageData.data;
var numPixels = pixels.length;

ctx.clearRect(0, 0, can.width, can.height);

for (var i = 0; i < numPixels; i++) {
    var average = (pixels[i*4] + pixels[i*4+1] + pixels[i*4+2]) /3;
    // set red green and blue pixels to the average value
    pixels[i*4] = 0;
    pixels[i*4+1] += 30;
    pixels[i*4+2] += 0;
}
ctx.putImageData(imageData, 0, 0);

例子:

http://jsfiddle.net/YxYuF/

从那里开始,只需制作一个漂亮的 UI 以呈现给用户即可。

于 2013-06-15T00:55:48.540 回答