Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

色迹 ChromaTrace

色迹 ChromaTrace

本地优先的 AI 追色与 AI 调色工作台

把「决定怎么调」和「真正去调」分开:模型只负责理解画面并给出配方,最终像素由本地引擎渲染。

License Platform Tauri React Rust

功能 · 技术栈 · 快速开始 · 模型配置 · 隐私与安全 · 测试与构建 · 友情链接


简介

色迹是面向 Windows 10/11 x64 的本地优先桌面调色客户端,基于 Tauri 2 + React 19 构建,macOS(Universal)可通过仓库内的工作流构建。

  • 不启用模型时可完全离线使用,纯本地追色与参数调色不发起任何网络请求;
  • 图像编辑类模型仅在显式授权后调用,且授权按端点独立记录;
  • API Key 交由系统凭据存储保管,不写入前端配置或安装包。

界面与工作区

应用围绕「工作区」这一素材容器组织,共五个视图:

视图 说明
工作区 工作区列表,文件夹语义卡片:名称、张数、封面、更新时间;支持新建、重命名、删除
工作区内容 当前工作区的素材网格,可多选、删除、打开所在位置、查看属性
AI 追色 双图追色工作区,底部为缩略图导航栏
AI 调色 单图 AI 调色工作区,含 XMP / CUBE 预设库
设置 01 外观 · 02 资料库 · 03 模型

顶栏最左侧是工作区快速切换控件(带下拉箭头)。未进入任何工作区时,AI 追色 与 AI 调色 会被禁用并提示「请先进入一个工作区」;切换工作区会二次确认,避免误丢当前编辑上下文。外观支持夜间 / 日间主题。

功能

工作区与素材库

  • 一次导入多张图片,跨会话恢复,无需反复选择文件;
  • 支持多选 JPG / PNG / WebP,桌面端另支持相机 RAW;
  • 导入前按卷判定来源类型(内部硬盘 / 可移动设备 / 网络磁盘 / 光盘 / 内存盘 / 来源不确定)并给出策略建议;
  • 两种纳入方式:
    • 复制到资料库 —— 适合可移动介质,源设备不在位时仍可编辑导出;
    • 直接引用原文件 —— 适合内部固定盘,零额外磁盘占用;
  • 复制前做剩余空间预检并显示真实目标路径,复制在后台进行,可立即开始修图;
  • 策略按卷标识记忆(与盘符无关),下次导入同一设备直接沿用;
  • 重复检测:身份为 sha1(volumeId | 卷内相对路径),已存在的图片会被识别并跳过;
  • 设备离线处理:卷不在位时顶部横幅提示,可重新连接、重新定位到新根目录,或本次不再提示;
  • 资料库位置可迁移到新目录,保留目录结构,迁移期间有分阶段进度提示;
  • 底部缩略图导航栏:虚拟滚动、RAW / 待复制 / 复制失败 / 断链 / 已修 / 专属参考 角标,支持 ←/→、Home/End 键盘浏览与 Ctrl / Shift 多选,并提供「套用到所选」批量应用当前配方。

AI 追色

  1. 在工作区中选定原片与参考图(参考图默认工作区共享);
  2. 运行 AI 语义追色,或退而使用本地快速匹配;
  3. 按需进行 AI 二次校正与精细调整;
  4. 对比后导出。
  • 左侧「匹配样本」显示直方图与原片 / 目标均值色块;
  • 「追色控制」在 AI 配方生效时只保留肤色保护,本地模式提供明度迁移强度、颜色迁移强度、保留原片明度、肤色保护;
  • 「匹配诊断」实时给出亮度偏移、饱和差异、暖色偏向与当前方法;
  • 对比模式:滑动对比 / 左右分屏 / 上下分屏 / 切换对比。

AI 语义追色会区分场景环境与可迁移风格,不使用同图像素对应。本地快速匹配仅适合场景与光线接近的照片。

AI 调色

  1. 选择一张照片并选择执行方式;
  2. 视觉模型分析并返回三套调色配方;
  3. 选择配方并执行;
  4. 检查 Before/After 后导出。

两种执行方式:

执行方式 说明 渲染位置
参数调色 视觉模型只输出结构化参数,最终像素由本地引擎生成 本地
图生图 将选中配方与重编码图片发送给图像编辑模型,由模型返回图片 云端

可选填风格提示(最多 800 字)来约束配方方向,也可对提示词做一次模型优化。图生图路径额外提供输出质量、输出尺寸等参数。

图生图会重新生成图片,可能改变人物、文字、物体与局部细节,结果必须由用户人工检查。应用会在首次使用前单独进行隐私确认。

预设与查找表

XMP 预设库(Lightroom / Camera Raw)

  • 导入 .xmp 预设(单文件 ≤ 2 MB),映射曝光、对比度、高光、阴影、白色、黑色、色温、色调、自然饱和度、饱和度、黑白、颗粒、纹理、清晰度、去朦胧、锐化、降噪、暗角、八通道 HSL、色调曲线、参数曲线、三分区色彩分级与三原色校准;
  • 可将当前参数保存为 XMP 预设,在资料库中以文件夹组织,在 Lightroom 中亦可继续使用;
  • 暂未应用并会明确列出的字段:镜头配置文件、镜头畸变、垂直透视、横向色差、裁剪;
  • 固定白平衡色温按 5500K 中性点近似换算。

CUBE LUT 库

  • 导入 .cube 文件(≤ 48 MB),仅支持 3D LUT,格点需为 17 / 33 / 64 / 65;
  • 采用 sRGB 三线性插值,强度可 0–100% 混合;
  • 应用顺序位于调色与空间细节之后、颗粒之前;
  • 目前仅在 AI 调色工作区生效,AI 追色不应用 LUT。

精细调整

模块 控制项
基础明暗 曝光、对比度、高光、阴影、白色、黑色
基础色彩 色温、色调、自然饱和度、饱和度
曲线 17 点单调总明度曲线 + 红 / 绿 / 蓝通道
分颜色调整 红橙黄绿青蓝紫洋红八色,各含色相、饱和度、明度
三分区色轮 阴影 / 中间调 / 高光,各含色相、饱和度、明度,另有平衡与混合
三原色校准 红 / 绿 / 蓝原色的色相与饱和度
细节与清晰 纹理、清晰度、去朦胧、锐化、锐化半径、锐化细节、锐化蒙版、明亮度降噪、颜色降噪
质感与输出 暗角、暗角中点、暗角羽化、褪色、颗粒

每个模块都可折叠,并有独立的眼睛 / 旁路开关,可整体停用该模块而不丢失参数。

相片属性

右键素材选择「属性」可查看文件名、类型、像素尺寸、体积、各项时间、来源(已复制 / 直接引用)、状态、原始位置与工作区副本路径、卷内相对路径与设备标识,以及读取自文件内 EXIF 或相机 RAW 元数据的拍摄信息。

导出

  • 输出 JPEG,质量 0.92;
  • 默认按原图像素全分辨率处理,仅当 GPU 纹理上限受限时才缩放,不设预览级尺寸上限;
  • 优先走 WebGL2 GPU 流水线,失败时自动回退 CPU 并给出提示;
  • 色彩空间为 sRGB / 8 bit,不保留 EXIF 等原始元数据;
  • 文件名后缀区分来源,例如 -chromatrace.jpg、-lightroom-xmp.jpg、-ai-image-color.jpg。

技术栈

层次 选型
桌面外壳 Tauri 2、Rust
前端 React 19、TypeScript、Vite
UI 图标 Lucide React
本地图像处理 Canvas 2D(CPU 流水线)+ WebGL2(GPU 预览与导出)
相机 RAW 解码 rawler(dnglab)
模型请求 Rust reqwest + rustls,支持 Multipart
本地设置 Tauri Store
密钥存储 Windows Credential Manager / macOS Keychain(Rust keyring)
测试 Vitest、cargo test
Windows 打包 NSIS,当前用户安装模式

快速开始

环境要求

  1. Windows 10/11 x64;
  2. Node.js 20 或更新的 LTS 版本;
  3. Rust stable 与 Cargo;
  4. Microsoft C++ Build Tools;
  5. WebView2 Runtime(Windows 10/11 通常已安装)。

检查 Tauri 环境:

npm run tauri -- info

安装依赖

npm install

启动 Windows 客户端

npm run tauri:dev

Tauri 会同时启动 Vite 开发服务器与客户端窗口。首次运行需要编译 Rust 依赖,耗时会明显更长。

只启动浏览器界面

npm run dev

浏览器模式适合检查 UI 与本地颜色引擎,但以下能力仅在桌面客户端可用:

  • Windows 原生文件与保存对话框;
  • 系统凭据存储;
  • 相机 RAW 解码;
  • 视觉模型与图像编辑模型请求;
  • 资料库位置迁移、EXIF 属性读取、整夹导入。

模型配置

配置入口位于 设置 → 模型。AI 相关流程需要开启模型能力、填写模型 ID 并保存 API Key,否则相关按钮保持禁用,顶栏显示「图片仅在本机处理」。

视觉模型

用于 AI 语义追色增强、二次校正,以及生成三套 AI 调色配方。

字段 说明
服务商名称 仅用于界面标识
Base URL 默认 https://api.openai.com/v1,兼容任意 OpenAI 风格服务
视觉模型 必须支持图片输入
接口类型 Responses API 或 Chat Completions 兼容接口
请求超时 视觉分析请求超时时间
缩略图最长边 发送给视觉模型的重编码 JPEG 尺寸
API Key 由 Rust 层写入系统凭据存储

图像模型

用于 AI 图生图调色。

字段 说明
图像模型 默认 gpt-image-2,可填兼容服务的模型 ID
质量 low、medium、high
输出尺寸 推荐 auto,也支持界面提供的固定尺寸
图生图超时 独立于视觉分析的超时时间
上传图片最长边 发送给图像编辑模型的重编码图片尺寸

Base URL 规则

通常填写 API 根地址:

https://api.openai.com/v1
https://your-compatible-service.example/v1
http://127.0.0.1:1234/v1

应用会自动追加对应端点:

用途 端点
Responses API /responses
Chat Completions /chat/completions
连接测试 /models
图像编辑 /images/edits
图像生成 /images/generations

兼容服务若要支持图生图调色,需要实现 Multipart 图片编辑接口并返回 b64_json,或返回应用能够下载的临时图片 URL。不同服务对图片消息、结构化输出与 Multipart 字段的支持可能存在差异。

隐私与安全

  • 纯本地追色与参数调色不发起模型网络请求;
  • 参数调色只向视觉模型发送由本地重编码的 JPEG 缩略图;
  • 图生图调色会发送尺寸较大的重编码图片,使用独立隐私授权,并明确提示该端点会重新生成图片;
  • 不主动发送原始文件、EXIF 与本地路径,也不使用同图像素对应;
  • API Key 不写入 React 持久化状态、Local Storage、普通配置文件或安装包,桌面端只通过系统凭据存储持久化;
  • Base URL、模型名称与非敏感设置保存在 Tauri Store;
  • 修改 Base URL 会清除已有的图片上传隐私授权,要求用户重新确认。

使用第三方兼容服务时,请自行确认服务商的接口兼容性、数据保留政策与安全性。

测试与构建

前端单元测试:

npm run test

前端生产构建:

npm run build

Rust 格式检查与测试:

cd src-tauri
cargo fmt -- --check
cargo test

生成 Windows NSIS 安装包:

npm run tauri:build

默认产物:

src-tauri/target/release/chromatrace.exe
src-tauri/target/release/bundle/nsis/ChromaTrace_0.1.0_x64-setup.exe

当前开发构建未配置代码签名证书,Windows 可能显示「未知发布者」。正式分发前应配置代码签名。

使用 GitHub Actions 构建 macOS

仓库中的 .github/workflows/build-macos.yml 会在 macos-14 Runner 上构建同时支持 Apple Silicon 与 Intel 的 Universal 应用。可在 Actions → Build macOS → Run workflow 手动启动,也可推送 v* 标签自动触发。

工作流完成后,.app.zip 与 .dmg 会上传到对应标签的 GitHub Release,并在运行详情页的 Artifacts 中保留一份:

ChromaTrace.app.zip
ChromaTrace_0.1.0_universal.dmg

该自动构建默认未使用 Developer ID 签名与 Apple 公证,仅适合内部测试。正式公开分发时,需要在仓库 Secrets 中配置 Apple 开发者证书与公证账号,并为工作流增加签名与 notarization 环境变量。

macOS 使用系统 Keychain 保存 API Key;Windows 继续使用 Credential Manager。

若标签已存在但 Release 中只有源码包,可手动运行该工作流并在 release_tag 中填写已有标签(例如 v0.1.0),工作流会创建或更新 Release 并补充安装文件。

项目结构

src/
  App.tsx                        五个视图的顶层导航、AI 追色与设置
  components/
    AiColorWorkspace.tsx         AI 调色工作流
    WorkspaceContentPage.tsx     工作区素材网格
    AssetLibraryPanel.tsx        XMP / CUBE 预设库面板
    Filmstrip.tsx                缩略图导航栏(虚拟滚动)
    FineTunePanels.tsx           精细调整面板组
    CurveEditor.tsx              17 点曲线编辑器
    ImportConfirmPanel.tsx       导入确认(卷策略与空间预检)
    VolumeBanner.tsx             设备离线提示与重新定位
    PhotoPropertiesDialog.tsx    相片属性与 EXIF
    LibrarySettingsPanel.tsx     设置 · 资料库
    ModelSettingsWorkspace.tsx   设置 · 模型
    Histogram.tsx                直方图
    CompareModeControls.tsx      对比模式切换
  lib/
    colorEngine.ts               本地颜色分析与像素处理(CPU 流水线)
    gpuPreview.ts                WebGL2 两段式预览与导出渲染
    cubeLut.ts                   .cube 解析与三线性插值
    lightroomXmp.ts              Lightroom / Camera Raw XMP 读写
    aiColor.ts                   AI 调色配方与强度转换
    workspace.ts                工作区数据模型
    useWorkspace.ts             工作区状态与导入流程
    thumbnails.ts               缩略图缓存
    hash.ts                      图片身份与重复检测
    photoProperties.ts           EXIF 属性装配
    modelSettings.ts             模型设置与校验
    exportImage.ts               JPEG 导出
    desktop.ts                   Tauri 命令桥接与浏览器降级
    files.ts                     图片解码与重编码
    types.ts / defaults.ts       业务类型与默认参数
src-tauri/
  src/
    lib.rs                       Tauri 命令注册
    workspace.rs                 工作区命令
    asset_library.rs             资料库与预设库
    raw_decode.rs                相机 RAW 解码(rawler)
    photo_info.rs                EXIF 与 RAW 元数据读取
    model_client.rs              视觉与图像模型请求
    credentials.rs               系统凭据存储
    main.rs                      入口
  tauri.conf.json                窗口与打包配置
docs/                            设计文档

已知限制

  • 颜色迁移与参数调色是全局处理,不是局部蒙版或语义分区调色;
  • 肤色保护是软规则,可能同时影响木材、沙地等暖色区域;
  • 图像编辑模型可能改变画面内容,不能视为完全无损的传统调色;
  • 导出为 JPEG 且不写回 EXIF / ICC,尚未实现完整 ICC 色彩管理;
  • 尚无评分、旗标、色标、虚拟副本、批量导出与导出预设;
  • 单图专属参考图已在数据模型中预留,但暂无创建入口;
  • 模型请求暂不支持取消,图生图也没有真实生成进度;
  • LUT 目前只在 AI 调色工作区生效;
  • 相机 RAW 解码仅在桌面客户端可用,浏览器模式仅支持 JPG / PNG / WebP;
  • 尚无代码签名与自动更新。

设计文档

许可证

本项目基于 GNU General Public License v3.0(GPL-3.0-only)发布。

友情链接

Linux Do

Linux Do —— 面向开发者与技术爱好者的中文社区,欢迎前往交流。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages