我想根据给定的数字计算颜色值.
0 -> pure red
100 -> pure green
example: 75 -> color, which is 75% from red to green.
Run Code Online (Sandbox Code Playgroud)
我需要这个到期计数器,它显示适当的颜色,因为天数倒计时.
我在http://www.mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript上找到了这个RGB到HSL脚本.我找不到任何其他小的体面的.问题是这段代码甚至不起作用.有谁知道为什么?(我不知道一点颜色数学,但也许它正在返回补充?)
function rgbToHsl(r, g, b){
r /= 255, g /= 255, b /= 255;
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max + min) / 2;
if(max == min){
h = s = 0; // achromatic
}else{
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch(max){
case r: h = (g - …
Run Code Online (Sandbox Code Playgroud) 我可以将HSB颜色转换为HSL吗?
Photoshop在其颜色选择器中显示HSB颜色.HSL颜色可以在CSS中使用.
我试过这个JS:
function hsb2hsl(h, s, b) { return { h: h, s: s, l: b-s/2 } }
而hsb2hsl(0, 100, 50).l == 0
不是25
更新:如果不转换HSB→RGB→HSL,我可以这样做吗?
我一直在研究这个问题已经有一段时间没什么可喜的结果了.我试图将图像分割成相似颜色的连接区域.(基本上将所有像素的列表分成多个组(每个组包含属于它的像素的坐标并共享相似的颜色).
例如:http: //unsplash.com/photos/SoC1ex6sI4w/
在这张图片中,顶部的乌云可能会落入一组.山上的一些灰色岩石在另一个,另一些是橙色的草.雪会是另一个 - 背包的红色 - 等等.
我正在尝试设计一种既准确又高效的算法(它需要在中端笔记本电脑级硬件上运行几毫秒)
以下是我的尝试:
使用基于连通分量的算法从左上角扫描每个像素,从左到右扫描每行像素(并将当前像素与顶部像素和左像素进行比较).使用CIEDE2000色差公式,如果顶部或左侧的像素在一定范围内,那么它将被视为"相似"并且是该组的一部分.
这种方法有效 - 但问题在于它依赖于具有锐边的颜色区域 - 如果任何颜色组通过软渐变连接,它将沿着该渐变向下移动并继续"连接"像素,因为各个像素之间的差异是比较小到足以被认为是"相似的".
为了解决这个问题,我选择将每个访问过的像素的颜色设置为大多数"相似"相邻像素(顶部或左侧)的颜色.如果没有相似的像素,则保留其原始颜色.这在某种程度上解决了更加模糊的边界或柔化边缘的问题,因为随着算法的进展,新组的第一种颜色将被"携带",并且最终颜色与当前比较颜色之间的差异将超过"相似性"威胁和不再是该群体的一部分.
希望这是有道理的.问题是这些选项都没有真正起作用.在上面的图像上返回的不是干净的组,而是嘈杂的碎片组,这不是我想要的.
我不是专门寻找代码 - 而是关于如何构建算法以成功解决这个问题的更多想法.有没有人有这个想法?
谢谢!
我正在构建的ASP.NET Web应用程序的用户可以选择颜色以用于某些元素(例如按钮/标题)以促进某种程度的个性化.
问题是,默认情况下,这些图层上的文字是黑色的...我要做的是评估用户通过选择器选择的HEX值,并以编程方式在黑白文本之间切换 - 这可以是JavaScript,或代码背后.
问题的关键在于我只是不确定如何评估HEX以确定所选颜色与黑色的接近度是否太接近使用黑色文本.
有任何想法吗?
有没有什么好的方法如何在Mathplotlib中将复数的二维数组绘制成图像?
将复数的大小映射为"亮度"或"饱和度"并将相位映射为"Hue"非常有意义(无论如何Hue只不过是RBG颜色空间中的相位). http://en.wikipedia.org/wiki/HSL_and_HSV
但据我所知,imshow只接受标量值,然后使用某些色阶进行映射.没有什么比投影真实的RGB图片更好的了吗?
我很容易实现一个版本,它接受3个浮点数的元组(向量)的二维数组或形状浮点数的ndarray [:,:,3].我想这通常是usefful功能.它对于绘制真实的RGB colord图像(例如从OpenCL输出的纹理)也很有用
我试图将一种颜色插入到另一种相同颜色的阴影中.(例如:天蓝色至深蓝色然后返回).
我偶然发现了一些代码,如果范围是0-255或0-1,可以使用.但是,就我而言,我有Color1和Color2的RGB代码,并希望进行旋转.
颜色1:151,206,255
颜色2:114,127,157
任何想法如何去做?
我正在尝试将RGB转换为HSL,我也希望从HSL转换为RGB,我已经为它编写了一个类但是如果我做RGB-> HSL-> RGB来尝试它是否有效我会得到一个不同的值.
示例案例: 如果您通过执行创建HSLColor对象HSLColor MyTestConversion = HSLColor.FromRGB(Colors.Green);
,然后 Color ExpectedGreenHere = MyTestConversion.ToRGB()
获得Colors.Green
与原始输入不同的颜色,那么出现问题.
这是我正在使用的代码:
public class HSLColor
{
public float Hue;
public float Saturation;
public float Luminosity;
public HSLColor(float H, float S, float L)
{
Hue = H;
Saturation = S;
Luminosity = L;
}
public static HSLColor FromRGB(Color Clr)
{
return FromRGB(Clr.R, Clr.G, Clr.B);
}
public static HSLColor FromRGB(Byte R, Byte G, Byte B)
{
float _R = (R / 255f);
float _G = (G …
Run Code Online (Sandbox Code Playgroud) 我目前设法让我的LED循环显示我选择的八种颜色.一切都正常,除了我想要更自然的感觉,并希望淡化/从一种颜色过渡到下一种颜色,而不是让它们只是互相替换.
到目前为止,这是我的代码:
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
setColor(250, 105, 0); // Yellow
delay(1000);
setColor(250, 40, 0); // Orange
delay(1000);
setColor(255, 0, 0); // Red
delay(1000);
setColor(10, 10, 255); // Blue
delay(1000);
setColor(255, 0, 100); // Pink
delay(1000);
setColor(200, 0, 255); // Purple
delay(1000);
setColor(0, 255, 0); // Green
delay(1000);
setColor(255, 255, 255); // White
delay(1000);
}
void setColor(int red, int …
Run Code Online (Sandbox Code Playgroud) 我需要一个颜色转换器从hsl转换为rgb和十六进制值.我会像这样做.我正在使用jquery和jquery ui range slider.这是我的代码:
$(function() {
$( "#hsl_hue_range" ).slider({
min: 0,
max: 100,
value: 0,
range: false,
animate:"slow",
orientation: "horizontal",
slide: function( event, ui ) {
var hsl_hue = ui.value;
}
});
});
$(function() {
$( "#hsl_saturation_range" ).slider({
min: 0,
max: 100,
value: 0,
range: false,
animate:"slow",
orientation: "horizontal",
slide: function( event, ui ) {
var hsl_saturation = ui.value;
}
});
});
$(function() {
$( "#hsl_light_range" ).slider({
min: 0,
max: 100,
value: 0,
range: false,
animate:"slow",
orientation: "horizontal", …
Run Code Online (Sandbox Code Playgroud)