「这是上个项目用过的配色,你看看能不能复用。」 设计师把一个 .sketchpalette 文件甩到群里。 我双击——macOS 跳出"无法打开"。 强制用文本编辑器打开——满屏 JSON。 装 Sketch 试试——又不想装一整个 Mac 设计软件就为了看一组颜色。

如果你也遇到过这种"我不是设计师但我得看一眼这套配色"的尴尬时刻,这篇文章帮你彻底解决问题。本期主角是 OpenFiles 桌面版,一款专门用来快速预览各种小众文件格式的轻量工具,对 .sketchpalette 格式提供了非常完整的可视化支持——三十秒内就能看到色板列表、3D 色彩空间分布、图表配色预览、颜色距离矩阵,甚至还有色盲模拟。

文章会从格式底层讲起,带着你看清楚 OpenFiles 在这个场景下到底干了什么,最后给一份能直接抄走用到 Figma / Tailwind / CSS 工程里的实战流程。


一、.sketchpalette 到底是个什么东西?

.sketchpaletteSketch Palettes 插件保存色板时使用的文件格式。Sketch 这个 macOS 上最流行的设计软件本身没有内置"导出色板成文件"的功能,但有个非常活跃的第三方插件 Sketch Palettes by Andrew Fiorillo——把它装进 Sketch 之后,你可以从色板面板把当前色板一键导出,文件后缀就是 .sketchpalette

这个格式本质上就是带元数据的 JSON。我们打开一个最小化的样例瞧瞧:

{
    "compatibleVersion": "2.0",
    "pluginVersion": "2.22",
    "colors": [
        {"red": 0.96, "green": 0.26, "blue": 0.21, "alpha": 1},
        {"red": 0.95, "green": 0.45, "blue": 0.13, "alpha": 1},
        {"red": 0.99, "green": 0.65, "blue": 0.16, "alpha": 1},
        {"red": 1.00, "green": 0.84, "blue": 0.20, "alpha": 1}
    ]
}

三个关键字段:

字段 含义
compatibleVersion 文件格式版本,目前主流是 "2.0"
pluginVersion 生成它的插件版本,常见 "2.22"
colors 颜色数组,每个颜色是 {red, green, blue, alpha}值域 0–1(不是 0–255)

为什么 macOS 默认打不开

Sketch Palettes 是社区插件,从来没进 macOS 的 UTI(Uniform Type Identifier)注册表,QuickLook 也没有官方的预览扩展。结果就是:

  • 双击 → 弹"无法打开"或者跳到一个不相关的应用
  • QuickLook(空格键)→ 显示为通用文件图标
  • 用 TextEdit 打开 → 看到的是上面那段 JSON 源码

对设计师同事来说,"想看眼配色还得复制 hex 一个一个粘到取色器里"是非常消耗专注力的。这就是 OpenFiles 出场的位置。


二、OpenFiles 是什么?

OpenFiles 桌面版 是一款 macOS(同时支持 Windows)下的轻量文件预览器,专门用来用一个工具预览所有小众格式。它原生认识的格式包括:

  • 设计类:.sketchpalette.ai.psd.fig 局部
  • 3D 类:.glb.gltf.stl.obj.fbx.dae
  • 数据类:.csv.tsv.parquet.ipynb
  • 工程类:.dwg.dxf.step.iges
  • 文档类:.md.docx.pptx.xlsx.epub
  • 各类代码源文件:58 种主流编程语言

而且不只是"能打开"——很多格式它都做了可视化层,你看到的不是文本源码,是真正可读、可玩的视图。.sketchpalette 就是它做得最深入的格式之一。


三、三种打开 .sketchpalette 的姿势

OpenFiles 装好之后,一般会自动注册自己作为 .sketchpalette 的默认应用。这时候三种打开姿势随便挑:

  1. 双击 —— 最直接
  2. 拖入 —— 把文件从 Finder 拖进 OpenFiles 主窗口
  3. 右键 → 打开方式 → OpenFiles —— 万一系统没自动关联,手动指定即可

打开后的整体长这样:

界面分成三栏:

区域 内容
左栏 最近打开的文件列表,方便在多个调色板之间切换
中栏 当前调色板的色板条 + 16 色清单(含 Hex 码)
右栏 主舞台:4 个可视化标签页 + 6 种色彩空间切换

下面挨个拆解右栏的四个标签页——这是 OpenFiles 这个格式预览器最值钱的部分。


四、功能拆解:4 个标签页 × 6 种色彩空间

4.1 色彩空间可视化(核心功能)

打开文件默认进入「色彩空间可视化」标签。你能在右侧看到一个可拖动旋转的 3D 散点图,每个颜色都被放置在它在选中色彩空间里的真实坐标上。顶部有 6 个色彩空间按钮:

LAB    RGB    HSL    HCL    HSV    CMYK

每种色彩空间能告诉你这套配色不一样的事情:

  • LAB:以"人眼感知"为基准。两个颜色在 LAB 空间里离得近 = 你眼睛会觉得它们像。这是判断"这两个颜色会不会被用户混淆"最准的视角。
  • RGB:屏幕原色空间。一组颜色在 RGB 立方体里的分布,能告诉你这套调色板偏向哪个原色通道。
  • HSL / HSV:把颜色拆成"色相 + 饱和度 + 明度"。如果你在做品牌色板,关心"色相是不是均匀分布、饱和度统一",看这两个色彩空间最直观。
  • HCL:跟 LAB 是一家人,但用极坐标表达,更适合给数据可视化挑配色(D3.js 用户应该熟悉)。
  • CMYK:印刷场景必看,能告诉你哪些颜色出印刷品的时候会"偏色"。

中间的色板列表里,每个颜色右侧的 Hex 码是 一键复制 的——这点对前端工程师极其友好,等下我们到工作流环节再展开。

4.2 图表配色预览

点第二个标签「图表配色预览」,OpenFiles 把你的 16 色直接拿去渲染成柱状图、折线图、饼图、堆叠图等常见数据可视化形态。

这个功能的意义在于:调色板拿在手里的时候你只看得到孤立的色块,真正用到图表里才知道香不香。 比如有些"看起来很高级"的暗色板,画出来的细线在背景上根本看不清——图表预览能在你做决策之前就告诉你这件事。

4.3 颜色距离矩阵

第三个标签是 N×N 的热力矩阵,矩阵的每个格子表示对应两个颜色的"感知距离"(基于 CIE76 / CIEDE2000 之类的色差公式)。

颜色越深的格子 = 两个颜色离得越近 = 可能会被用户混淆。这个功能我个人非常爱用——做数据可视化的时候,"两个分类色撞色"是头号差评源,距离矩阵直接告诉你哪两个颜色组合是雷区。

4.4 色盲模拟(无障碍场景必备)

最后一个标签也是最容易被忽略但最重要的:色盲模拟

OpenFiles 同时给你看 5 种视图:

  • 正常视觉
  • 红色盲(Protanopia)
  • 绿色盲(Deuteranopia)
  • 蓝色盲(Tritanopia)
  • 红色弱(Protanomaly)

世界上约 8% 的男性、0.5% 的女性有不同程度的色觉障碍。如果你做的是 toC 产品、医疗仪表盘、教育软件,"红绿配色"在色盲模拟下可能直接糊成一团——一眼就看出来是不是要换配色。


五、实战工作流:从 .sketchpalette 到生产环境

讲了这么多功能,最关键的还是怎么把这套预览能力嵌进你日常的工作流。给你一套可抄的:

5.1 设计 → Figma 同步

OpenFiles 里每个色块右侧的 Hex 码都是单击复制。粘到 Figma:

  1. Figma 打开你的设计文件
  2. 选中需要上色的元素
  3. 在 Fill 面板贴上从 OpenFiles 复制来的 Hex
  4. 重复 16 次(或者用 Figma 的 Color Style 一次性建好 16 个 Style)

5.2 前端 → CSS Variables

直接抄成 CSS 变量:

:root {
  --color-primary-1: #f54236;
  --color-primary-2: #f27321;
  --color-primary-3: #fca629;
  --color-primary-4: #ffd633;
  --color-primary-5: #8cc24a;
  --color-primary-6: #2ea6b5;
  --color-primary-7: #2163b5;
  --color-primary-8: #663bb8;
  --color-accent-1:  #e81f63;
  --color-accent-2:  #e84d82;
  --color-accent-3:  #9c26b0;
  --color-accent-4:  #4db04f;
  --color-accent-5:  #2196f2;
  --color-neutral-1: #4d4d4d;
  --color-neutral-2: #9e9e9e;
  --color-neutral-3: #f5f5f5;
}

5.3 Tailwind 配置

如果你用 Tailwind,把它注入 tailwind.config.js

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: {
          50:  '#f5f5f5',
          100: '#9e9e9e',
          200: '#4d4d4d',
          300: '#2196f2',
          400: '#4db04f',
          500: '#9c26b0',
          600: '#e84d82',
          700: '#e81f63',
          800: '#663bb8',
          900: '#2163b5',
        },
        accent: {
          red:    '#f54236',
          orange: '#f27321',
          amber:  '#fca629',
          yellow: '#ffd633',
          lime:   '#8cc24a',
          teal:   '#2ea6b5',
        },
      },
    },
  },
};

5.4 数据可视化 → ECharts / D3

ECharts 直接可以传一个颜色数组:

option = {
  color: [
    '#f54236', '#f27321', '#fca629', '#ffd633',
    '#8cc24a', '#2ea6b5', '#2163b5', '#663bb8',
    '#e81f63', '#e84d82', '#9c26b0', '#4db04f',
    '#2196f2', '#4d4d4d', '#9e9e9e', '#f5f5f5',
  ],
  // ... 其余 option
};

D3 用 d3.scaleOrdinal

const palette = d3.scaleOrdinal()
  .domain(d3.range(16))
  .range([
    '#f54236', '#f27321', '#fca629', '#ffd633',
    '#8cc24a', '#2ea6b5', '#2163b5', '#663bb8',
    '#e81f63', '#e84d82', '#9c26b0', '#4db04f',
    '#2196f2', '#4d4d4d', '#9e9e9e', '#f5f5f5',
  ]);

工作流走通之后,OpenFiles 在你这套链路里只承担一个角色:30 秒内决定一套颜色到底要不要用、好不好用。决策做完之后 Hex 一复制,直接进生产。


六、进阶:用 Python 自己生成 .sketchpalette

既然格式是 JSON,那自动化生成是顺手的事。下面这段 Python 接收一组 Hex 字符串,吐一个标准的 .sketchpalette 文件:

import json
from pathlib import Path

def hex_to_rgba(hex_str: str, alpha: float = 1.0) -> dict:
    """把 '#f54236' 转成 sketchpalette 需要的 0-1 浮点 RGBA"""
    hex_str = hex_str.lstrip("#")
    if len(hex_str) == 3:
        hex_str = "".join(c * 2 for c in hex_str)
    r, g, b = (int(hex_str[i:i + 2], 16) / 255.0 for i in (0, 2, 4))
    return {"red": r, "green": g, "blue": b, "alpha": alpha}


def build_sketchpalette(hex_list, output_path: str | Path) -> Path:
    payload = {
        "compatibleVersion": "2.0",
        "pluginVersion": "2.22",
        "colors": [hex_to_rgba(h) for h in hex_list],
    }
    out = Path(output_path)
    out.write_text(json.dumps(payload, indent=4, ensure_ascii=False), encoding="utf-8")
    return out


if __name__ == "__main__":
    palette = [
        "#f54236", "#f27321", "#fca629", "#ffd633",
        "#8cc24a", "#2ea6b5", "#2163b5", "#663bb8",
        "#e81f63", "#e84d82", "#9c26b0", "#4db04f",
        "#2196f2", "#4d4d4d", "#9e9e9e", "#f5f5f5",
    ]
    path = build_sketchpalette(palette, "sunset-vibes.sketchpalette")
    print(f"已生成 → {path.resolve()}")

应用场景:

  • 从设计 Token JSON / Figma Variables / Style Dictionary 自动批量导出 .sketchpalette,方便设计师在 Sketch 里维护
  • 给设计师准备"开箱即用"的色板礼包
  • 在 CI 里把品牌色板做成产物,每次改色都同步

生成出来的文件可以直接拖进 OpenFiles 验证,闭环。


七、几个使用上的小贴士

  1. 窗口大小:色彩空间可视化的 3D 散点图依赖屏幕空间,把 OpenFiles 拉到至少 1280px 宽体验最好。
  2. 多文件对比:在左栏依次双击不同的 .sketchpalette,OpenFiles 会保留最近列表,可以快速来回切换看哪套配色更顺眼。
  3. 截图分享:截图发到群里给同事看比"我口述这套色挺好看"靠谱多了。
  4. Windows 用户:OpenFiles 也有 Windows 版本,体验一致,文件关联通过右键「打开方式」设置即可。

八、总结

.sketchpalette 这个格式存在很多年了,但因为它依附于一个第三方插件,长期处在"设计师之间流通但没工具能正经预览"的尴尬地带。OpenFiles 桌面版补上的就是这一块拼图——它没去解决任何"全新的"问题,但把一个高频的小问题解得非常彻底:

  • ✅ 色彩一目了然 + Hex 一键复制
  • ✅ 6 种色彩空间 3D 视图,看清楚配色"长什么样"
  • ✅ 图表预览,提前知道"用起来怎么样"
  • ✅ 距离矩阵 + 色盲模拟,无障碍 + 防撞色双保险
  • ✅ 配套 Hex 直接进生产,零切换成本

如果你是设计师,OpenFiles 让你不再为了打开同事的调色板而装一整套 Sketch;如果你是前端 / 数据 / 移动开发,OpenFiles 让你三十秒判断这套色到底能不能落到代码里。

如果你也觉得 macOS 上确实缺这么一个轻量预览器,点赞 + 收藏 + 关注 三连一下吧,后续我会陆续介绍 OpenFiles 对其他小众格式(.glb 3D 模型 / .dwg CAD 图纸 / .parquet 列存数据)的支持,欢迎留言告诉我你最想看哪个格式的深度评测。


相关链接:

  • OpenFiles 官网:openfiles.pansysoft.app
  • Sketch Palettes 插件源码:https://github.com/andrewfiorillo/sketch-palettes
  • Sketch 应用:https://www.sketch.com

标签: OpenFiles Sketch sketchpalette 调色板 色彩管理 设计师工具 CIE LAB 色盲模拟 Tailwind ECharts macOS

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐