Javascript 如何计算调色板中选定颜色的颜色?

Javascript 如何计算调色板中选定颜色的颜色?,javascript,html,css,html5-canvas,Javascript,Html,Css,Html5 Canvas,这是一项后续行动 之前,我在调色板中的选定像素上使用getImageData来确定颜色。但是,渐变并不总是完全精确的。这甚至是一个例子。它们的调色板并不完全准确,但它们根据您在调色板中选择的位置返回的颜色是正确的 因此,假设此代码正在生成调色板: 功能色相{ var ctx=document.querySelectorcanvas.getContext2d; 设w=ctx.canvas.width; 设h=ctx.canvas.height; var grH=ctx.createLinearG

这是一项后续行动

之前,我在调色板中的选定像素上使用getImageData来确定颜色。但是,渐变并不总是完全精确的。这甚至是一个例子。它们的调色板并不完全准确,但它们根据您在调色板中选择的位置返回的颜色是正确的

因此,假设此代码正在生成调色板:

功能色相{ var ctx=document.querySelectorcanvas.getContext2d; 设w=ctx.canvas.width; 设h=ctx.canvas.height; var grH=ctx.createLinearGradient0,0,w,0; grH.addColorStop0,'fff'; grH.addColorStop1,'hsl'+色调+',100%,50%'; ctx.fillStyle=grH; ctx.0,0,w,h; var grV=ctx.createLinearGradient0,0,0,h; grV.addColorStop0,'rgba0,0,0'; grV.addColorStop1,'000'; ctx.fillStyle=grV; ctx.0,0,w,h; } 抽油盘120;
您知道鼠标或指针的位置是pointerdown,pointermove,因此您应该能够在上一个问题中构建画布时以百分比的形式计算相对于画布的位置,如果指针在300px宽画布的一半,则为50%,垂直位置相同。左下角为0%,右上角为100%,100%

与色调结合的百分比将给出HSV值,其中:

H = hue
S = saturation = left to right percentage
V = value = bottom to top percentage
然后,可以使用以下方法将HSV值转换为HSL值:

function hsv2hsl(h, s, v) {
    var l = v - (v * s) / 2;
    var m = Math.min(l, 1 - l);
    return [h, m ? (v - l) / m : 0, l];
}

如果鼠标位于画布的右侧,则该值将为100%。

您知道鼠标或指针位置的位置是pointerdown,pointermove,因此,在上一个问题中构建画布时,您应该能够以百分比的形式计算相对于画布的位置,如果指针在300px宽画布的一半,则为50%,垂直位置相同。左下角为0%,右上角为100%,100%

与色调结合的百分比将给出HSV值,其中:

H = hue
S = saturation = left to right percentage
V = value = bottom to top percentage
然后,可以使用以下方法将HSV值转换为HSL值:

function hsv2hsl(h, s, v) {
    var l = v - (v * s) / 2;
    var m = Math.min(l, 1 - l);
    return [h, m ? (v - l) / m : 0, l];
}

如果鼠标位于画布的右侧,则该值将为100%。

是否可以根据画布的像素尺寸量化颜色值,以及结果应在什么颜色空间中?因为我刚刚在Chrome和Firefox中重新检查过,获取特定颜色空间的完整范围对于某些画布尺寸来说可能很困难。根据画布的像素尺寸量化颜色值是否可以接受,以及结果应该在什么颜色空间中?因为我刚刚在Chrome和Firefox中重新检查过,对于某些画布尺寸,获取特定颜色空间的完整范围可能很困难。