将画布 imageData 中的像素更改为 hsl(60, 100%, 50%)

Dun*_*ill 5 javascript html5-canvas

我想将 a 的像素更改HTML5 canvas为一个hsl值。它可以是hsl用户选择的任何值。

我可以用 var imageData = canvas.getImageData(0, 0, 200, 200);

但是该imageData.data数组包含rgba. 实际上数组中的每个值都是一个字节,所以 -

data[0] = r, data[1] = b, data[2] = g, data[3] = a, data[4] = r, data[5] = b, data[6] = g, data[7] = a 等等。

有没有api可以用来操作imageData的?一个api会抽象原始数据,以便 -data[0] = rgba, data[1] = rgba等等?

这可能有类似的方法 - data[0].setValueHSL(60, 100%, 50%);

如果这个 api 不存在,是否有一个类可以创建/表示一个 hsl 值并且可以将值转换为 rgb?

hyp*_*ght 1

你可以写一个像这样简单的

parseImageData = function(imageData) {
    var newImageData = [];
    for ( var i = imageData - 1; i>0; i-4) {
        newImageData.push([ imageData[i],
                            imageData[i-1],
                            imageData[i-2],
                            imageData[i-3] ]);
    }
    return newImageData;
}
Run Code Online (Sandbox Code Playgroud)

那么如果你想把它转换回来

parseNewImageData = function ( newImageData ) {
    var imageData = [];
    for ( var i = newImageData - 1; i>=0; --i) {
        imageData.push( imageData[i][0] );
        imageData.push( imageData[i][1] );
        imageData.push( imageData[i][2] );
        imageData.push( imageData[i][3] );
    }
    return imageData;
}
Run Code Online (Sandbox Code Playgroud)

超级简单,你可以让它专门做你需要的事情!

我希望这有帮助!