图片配色提取:主色、8 色调色板与 HEX 取值
选一张海报、截图或照片,在浏览器里用中位切分算法算出主色和一个 8 色调色板。色块显示 HEX、点击即可复制;没有色数调节,也没有 HSL/CMYK 输出或 CSS 变量导出。
这个取色工具的输出与边界
主色 + 8 色调色板
每次加载都会跑一次中位切分量化:最大的色簇作为主色,调色板固定 8 个色块。图片只在 16:9 的区域内以 contain 方式预览,不提供像素级操作。
不能调色数,也不切换格式
色数写死为 8(主色另外用 5 色量化得出),内部只用 RGB,界面上只显示小写 HEX。没有 HSL、CMYK、RGB 文本,也没有 CSS 变量导出。
点色块复制 HEX
每个圆形色块点击后把 HEX 写入剪贴板并弹出提示。图片本身不可点,所以没有吸管,也不能取某个具体像素的颜色。
canvas 处理,但只接受本地文件
图片画到 canvas 后用 getImageData 读取,全部在浏览器里完成。没有图片 URL 输入,所以不存在跨域 canvas 污染问题,只分析你选中的文件。
采样会跳过近白和透明像素
每 10 个像素取 1 个;alpha 低于 125 的像素和接近纯白(三通道都大于 250)的像素会被忽略。白色背景和透明区域因此不会主导结果。
图片取色常见问题
颜色是怎么算出来的?
用 ColorThief 的中位切分量化(MMCQ)。主色取 5 色量化里的第一个色簇;调色板是 8 色量化。quality 默认 10,也就是每 10 个像素采样一次。
能改颜色数量吗?
不能。8 个色块写死,没有滑块或输入框,主色来自另一轮 5 色量化。每次选择新文件都会重新计算并替换调色板。
能输出哪些颜色格式?
只有小写 HEX,显示在色块上、点击复制。没有 RGB、HSL、CMYK 读数,没有 CSS 变量,也没有 PNG 或文本导出。
能吸管取色或点单个像素吗?
不能。图片只是预览,点击色块只会复制它的 HEX,不提供像素级取色,也不能在照片上点某个位置取色。
图片会上传吗?是在 canvas 里处理吗?
全部在本地 canvas 处理,不上传。文件通过 object URL 载入,先显示在固定的 16:9 预览区,再按原始尺寸画入 canvas 分析。
跨域图片会污染 canvas 吗?
页面只支持本地文件选择,没有 URL 输入,也没有调用 getColorFromUrl,所以不会遇到 CORS 污染。需要网络图片时请先下载再上传文件。
为什么白色和透明区域不算?大图会怎样?
alpha 低于 125 和近白(三通道都大于 250)的像素会被跳过。超大图片按原始尺寸画入 canvas 并整幅读取,会比较慢、占内存,没有缩放或大小限制。

