登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

darktable 怎样把编辑历史写入 XMP 边车文件

来源:17golang原创

时间:2026-10-30 17:43:36 455浏览 收藏

在 darktable 里,编辑历史不是写回原始 Raw 文件,而是由数据库和 XMP 边车文件共同保存。要让编辑历史随照片一起迁移,打开 Preferences > Storage > XMP sidecar files,把 Create XMP files 设为 On import 或 After edit。如果已经导入过照片,选 After edit 也可以在下一次编辑或添加标签时生成边车文件。

官方地址:https://docs.darktable.org/usermanual/development/en/

最稳妥的做法是选择 After edit 或 On import,再把原始照片和同名 XMP 一起备份。不要只复制数据库,也不要把“看不到保存按钮”理解成编辑没有写入。

先分清数据库与 XMP 的职责

darktable 以非破坏方式编辑照片:原始 Raw 文件保持不变,编辑步骤、标签和部分元数据写入数据库,同时可以写入照片旁边的 XMP 文件。第一次导入图片时,若边车写入没有被关闭,通常会看到类似 photo.raw.xmp 的文件。

边车文件的价值在于它能和原图一起复制、归档或迁移。数据库更适合当前库快速浏览;XMP 则是重建编辑历史的重要外部副本。两者不是简单的“谁都能随时覆盖谁”:照片已经进入当前库后,数据库记录通常优先于外部 XMP。

第一步:从 Storage 找到 XMP 写入开关

打开 darktable 的首选项,按下面的路径进入设置:

  1. 点击菜单中的 Preferences。
  2. 在左侧选择 Storage。
  3. 展开或定位 XMP sidecar files 区域。
  4. 找到 Create XMP files 下拉框。
darktable Storage 设置中的 XMP sidecar files 和 After edit 选项说明图
图1:XMP 设置入口说明图,重点看 Storage 面板中的写入时机。

这是一张原创界面说明图,不是 darktable 实际运行截图。读者只需要确认自己处于 Storage,并能看到 Create XMP files,就找到了正确入口。

第二步:按工作方式选择首次写入时机

下拉框通常有三个方向:

选项什么时候写入适合场景
Never不写 XMP 边车仅适合明确不需要边车的测试环境
On import导入图片时就创建希望从导入开始就有可备份文件
After edit首次编辑或添加标签后创建想减少无编辑照片旁的边车数量

普通工作库建议使用 On import 或 After edit。如果你刚发现设置是 Never,改成 After edit 后不要只查看旧照片目录;先对一张照片做一次明确编辑或添加一个标签,再检查对应位置。

第三步:完成一次编辑并确认边车更新

在暗房视图中选择一张照片,调整一个处理模块,例如曝光或裁剪,然后观察历史栈。darktable 会自动同步编辑,不需要寻找单独的“保存编辑历史”按钮。Storage 页面中的 auto-save interval 还能控制暗房处理历史的自动保存间隔;设为零则关闭自动保存。

darktable 暗房历史栈和 XMP 边车已更新的结果说明图
图2:编辑完成后的结果说明图,查看历史栈和边车更新状态。

这张图同样是原创说明图,不是运行证据。实际确认时,重点看三件事:历史栈里有刚刚的处理动作;照片旁出现与原文件同名的 .xmp 文件;备份目录可以同时找到 Raw 与 XMP。使用栅格蒙版等逐像素编辑数据时,darktable 还可能额外生成 DTDATA 边车文件。

没有生成或重新导入不一致时怎么排查

  1. 先看写入选项。回到 Preferences > Storage > XMP sidecar files,确认不是 Never,并确认自己已经完成一次编辑或添加标签。
  2. 再看文件夹权限。XMP 会和原图放在一起;如果原图目录只读,设置正确也可能无法创建或更新边车。换到可写目录做一次小范围排查。
  3. 外部修改要开启启动扫描。如果 XMP 被其他程序更新,打开 Look for updated XMP files on startup,下次启动时让 darktable 检查更新,并在提示中选择重新加载或用数据库覆盖。
  4. 理解数据库优先级。照片已经导入当前库后,直接用其他软件改 XMP,不代表当前界面会立刻变化;下一次同步还可能把数据库内容写回 XMP。需要外部边车生效时,使用重新导入或启动扫描提供的更新选择。

最后按 Raw 与 XMP 成对备份

备份时把原始照片、同名 XMP,以及实际存在的 DTDATA 一起复制。只备份导出的 JPEG 不能恢复完整编辑历史,只备份数据库又会让照片脱离原库后难以重建。迁移到另一份 darktable 图库前,也要注意每个编辑副本可能有带编号的边车文件,例如同一原图的不同 duplicate 会对应不同的文件名。

可以用下面的清单做收尾:

  • Create XMP files 不是 Never;
  • 已经完成过一次编辑或添加标签;
  • 原图目录允许创建和更新文件;
  • 备份时 Raw、XMP、必要的 DTDATA 同步存在。

相关问题

编辑历史会写回原始 Raw 文件吗?

不会。darktable 以非破坏方式处理原始图像,编辑历史主要保存在数据库和边车文件中。

为什么改了外部 XMP,darktable 里没有马上变化?

当前图库中的数据库记录可能优先。开启启动时查找更新的 XMP,或按重新导入流程让 darktable 选择重新加载边车。

每张照片都会生成 DTDATA 吗?

不会。DTDATA 主要在需要保存逐像素编辑数据时出现,普通照片通常只有 XMP 边车。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>