图片色板提取器 - 获取 HEX、RGB 与 HSL

提取任何图片中的主要颜色,并为每个色块给出 HEX、RGB 和 HSL 值,同时附上符合 WCAG 标准的推荐文字颜色。全部在您的浏览器中完成。

色板提取器的工作原理

这个工具精准地解答一个窄域问题:如果必须用几种颜色来描述这张图片,会是哪几种?它会在浏览器中解码您的图片,将长边缩小到约 200 像素,然后从 Canvas 上读取原始像素数据。降低分辨率并非折损精度的捷径——在缩放过程中对相邻像素取均,能消弭 JPEG 振铃和传感器噪点,否则这些噪点会表现为几十个几乎雷同的暗色块。此举还将整体分析量控制在四万像素以内,即便在手机上也能即时完成。在一切处理开始前,透明度低于 128 的像素会被直接丢弃。这一步正是让背景透明的 logo 不再将黑色误报为主色的关键,也是其他提取器最常犯的错误。剩下的不透明像素会通过中位切分法进行分组。中位切分法将像素视作三维 RGB 空间中的点云,用一个盒子将其包络,然后反复挑选颜色分布最分散、且基数最大的盒子,并在色值确实发生变化的位置将其一分为二。重复此步骤,直到盒子数量达到您设定的颜色数,这样得到的聚类遵循图像的实际色彩结构,每个聚类汇报的结果是内部所有像素的平均值,而非一个武断的插值中点。正因如此,结果呈现的是您图片中实实在在的颜色,而非固定网格插值所产生的那种灰蒙蒙的色调。随后,工具会调整排序。单纯按像素占比排序是个陷阱:一张照片通常有百分之四十的区域是天空或白色摄影棚背景,如果按原始数量排行,这些色块会霸占前排,将您真正想要的颜色挤下去。因此,在对列表排序时,近乎中性色、近乎黑色和近乎白色的聚类会被降低权重,但它们绝不会被丢弃,且每个色块旁显示的百分比始终是真实、未经修改的像素占比。最后,每个色块都会根据 WCAG 2.1 相对亮度计算出一个配文颜色,通过比较黑与白对该具体颜色的对比度高低来做出选择。这个测试用的是亮度而非明度,所以在中调色彩上能得到正确的结果,简单的亮度阈值往往会在此犯错。

为何要从图片中提取色板

设计工作通常从一个视觉元素开始——一张照片、一张截图、一张情绪板,或是某人发来的 logo——最终落脚点却是需要逐行敲进代码的颜色数值。这个工具弥合了这之间的鸿沟,无需在应用程序中来回切换。

在几秒钟内,从一张英雄照、产品图或品牌素材中构建出网站或应用的主题,生成的数值可直接粘贴到 CSS 或 Tailwind 中。
当所有人都找不到原始品牌文件时,从 logo 或旧截图中找回精确的 HEX 色码。
为每一个色块提前获取易读的文本颜色,无需猜测白色文字在那个背景上是否能过关。
为同事或客户生成一个无需安装软件或打开工具就能直接查看的色板 PNG。

如何从图片中提取颜色

只需四步,无需账号,所有内容均不离开您的设备——图片在您本地的浏览器中解码与分析。

1

拖入一张 JPG、PNG、WebP、GIF 或 SVG,图片加载后提取工作即刻自动开始。

2

选择您想要的颜色数量:4 种适合紧凑的品牌色系,10 种则能捕捉更富细节的照片。

3

点击任一色块上的 HEX、RGB 或 HSL 值即可复制,或使用“复制全部 HEX”按钮一次性获取整个色系。

4

导出一段 CSS 变量片段、一个 Tailwind 配置块,或是将色板渲染为 PNG 并下载。

常见问题

不是。工具采用的是中位切分法,先将像素在 RGB 空间里聚类,反复分割色谱最广且基数最大的那个聚类,直到数量达到您设定的色数。每一个色块都是一个真实像素聚类的均值,意味着这是图片中真实存在的颜色。排序虽然参考像素数量,但近乎灰色、近乎黑色和近乎白色的聚类会被降低权重,避免大面积单调背景将真正的强调色挤出列表。但每个色块上显示的百分比仍是真实的像素占比,未经加权。
通常是因为图片中面积最大的部分并非您视觉上最关注的颜色。一张产品照可能有百分之六十的区域是白色弧形幕背景,而您的视线会聚焦在画面中间的红色物品上。这座工具正是出于这个原因对中性色进行了降权,不过这种处理是审慎且适度的。如果一张图片的大部分区域确实就是一种中性色,那这种中性色依然会占据主位。如果您希望获得更多强调色,请将色数提高到 8 或 10,那么那些较小的聚类将获得自己的独立色块,而不是被合并到大聚类中去。
能,这恰是使用本工具的一个重要原因。分析开始前,任何 Alpha 值低于 128 的像素都会被丢弃。如果没有这一步,将透明 PNG 绘制到 Canvas 上时,全透明像素的 RGB 值会被赋予 0,而许多跳过此步骤的在线工具都会错把黑色当作绝大多数 logo 的主色。如果一张图片是完全透明的,那根本就没有可采样的像素,这时您会看到一条明确的提示信息,而非一个黑色的色板。
这个颜色指黑色或白色,取决于哪个颜色与该色块的 WCAG 2.1 对比度更高。计算过程是:利用 sRGB 伽马曲线将颜色转换为相对亮度,再套用标准公式 (L1 + 0.05) / (L2 + 0.05)。这点很关键,因为它不以“50% 明度”作为分水岭,转折点大约在相对亮度 0.179 的位置。例如,像 #767676 这样的颜色,如果仅凭 HSL 中的明度来判断,很容易误认为白色文字在上面足够清晰,但事实上黑色文字的对比度分更高。每个色块的文本标签正是用该色块推荐的文字颜色来渲染的,所见即所得。
4 色适用于 logo、扁平感插画,以及任何想精简为一套精致品牌色系的情况。6 色可视为大部分照片的稳妥预设,足以给出主色、辅助色及足够丰富的基础色调来搭建一个用户界面。8 到 10 色主要面向元素繁杂的画面——当照片充满细节、渐变和多重色彩时,额外的插槽可以把不同于主调的点缀颜色挑拣出来,否则它们大概率被平均化到相邻色块之中。更改色数会重新触发整个提取流程,而不仅仅是在列表上做删减,所以六色方案的结果,绝不是直接从十色结果中取前六位那么简单。
CSS 文件是一个 :root 样式块,按屏幕上显示的既定顺序,为每种颜色定义一个自定义属性,名称范围从 --color-1 到 --color-n,同时包含一个指向第一种颜色的别名 --color-dominant。每一行尾部注释中有对应的像素占比,方便您辨识颜色的显著性。Tailwind 文件则是一个配置代码段,其中的颜色定义嵌套在 theme.extend.colors.palette 下,合并到您自己的配置后,便可得到诸如 bg-palette-1 和 text-palette-3 这样的样式类。两者都是可打开自行编辑的纯文本文件。
不会。文件在您的浏览器中解码,被绘制到一个内存内的 Canvas 上,并在那里回读像素数据。不会有任何图片数据、色板信息或是文件名被传输到任何服务器上,意味着您的保密设计稿、未发布的产品照片以及客户素材会安稳地留在本机。换个角度说,就算页面加载完毕后网络断开,该工具依然能持续工作,此外也不存在固定的上传大小上限,唯一的限制取决于内存。
取决于浏览器能够解码的格式。实践中最常用的是 JPG、PNG、WebP、GIF 和 SVG。GIF 动画会对其首帧采样。SVG 文件要是不能声明固有尺寸就无法使用,因为浏览器需要一个具体尺寸来把它光栅化成像素。图片像素很高也完全没问题——图片在采样前会先降尺寸,因此一张 6000 像素宽的 RAW 导出并不比缩略图耗费更长的分析时间。

更多图片工具

探索其他强大的图片编辑工具