【发布时间】:2022-01-08 11:01:51
【问题描述】:
我正在尝试找到一种方法来生成 RGB 颜色的随机阴影。
正如您在 sn-p 中看到的,大多数色调都还可以,但有些颜色在视觉上完全不相关。有办法改善吗?
let resultsContainer = document.getElementById('results')
let original = { r: 244, g: 102, b: 255 } // generate random shades of this color
let max = 100
let min = 100
let results = []
document.getElementById('original').style.background = `rgb(${original.r}, ${original.g}, ${original.b})`
function randomBetween(min, max) {
min = min < 0 ? 0 : min
max = max > 255 ? 255 : max
return min + Math.floor(Math.random() * (max - min + 1))
}
while (results.length < 10) {
results.push({
r: randomBetween(original.r-min, original.r+max),
g: randomBetween(original.g-min, original.g+max),
b: randomBetween(original.b-min, original.b+max),
})
}
results.forEach(({ r, g, b }) => {
let result = document.createElement('div')
result.className = 'result'
result.style.background = `rgb(${r}, ${g}, ${b})`
resultsContainer.appendChild(result)
})
.result {
float:left;
width: 50px;
height: 50px;
}
<div id="original" class="result"></div>
<br>
<br>
<br>
<br>
<div id="results"></div>
- 我的 randomBetween() 方法的灵感来自 https://stackoverflow.com/a/23095771/2272048
【问题讨论】:
-
最好有大量预先批准的颜色,然后从中随机提取以避免出现多个灰色。
-
无关紧要是什么意思?
-
@ggorlen 在视觉上无关
-
毫不奇怪,每个色调,乍一看只有 5-6 个可区分的亮度级别。并且仅对于最上面的一个,您有 3 个可区分的饱和度级别,而较低的亮度值则按比例减少。因此,只有 12 种可感知的颜色才会有单一的色调可供选择。所有这些你都可以在 HSV 颜色空间中系统地构建。
-
抱歉,我仍然不确定“视觉相关性”对您意味着什么。灰太多了?重叠/相似的颜色太多?
标签: javascript node.js colors rgb