跳转到内容

createAutoPalette

function createAutoPalette(
sourceColors,
clusterCount,
ignoreWhite?,
toLab?,
useKMeansPP?,
intent?): PaletteResult;

Defined in: packages/core/src/bg-render/palette/auto.ts:76

同时跑两种取色算法并择优:暗色调色板偏好更分散的结果,亮色调色板反之偏好 更聚拢的结果(八叉树在亮色上容易退化成一片惨白,所以 0 分散度直接判负)。

但分散度只在两者给出同样多的颜色时才有可比性。调用方要几个色就是几个色,被 重复填充凑满的结果对任何按数量取色的用法都是退化的 —— 拿去做多点渐变会直接 塌成两色平铺 —— 而重复恰恰会拉低分散度,于是在亮色分支里被当成「更聚拢」选 中。所以先比互不相同的颜色数,同数时才轮到原本的分散度规则。

「亮色偏好更聚拢」同样是强调色的取向:强调色散得没有章法不好用,但背景要的正 是封面的颜色跨度,更分散才更像那张封面。所以 intent"dominant" 时一律 取更分散的一支,不再分明暗两套。见 PaletteIntent

Parameter Type Default value
sourceColors readonly ColorCount[] undefined
clusterCount number undefined
ignoreWhite boolean false
toLab boolean false
useKMeansPP boolean false
intent PaletteIntent "accent"

PaletteResult