WINDER

边车文件

在磁盘上,一张照片恰好是两个文件:图片本身(WDR-260504-0001-A.jpg),以及紧挨着它、同名的边车文件(WDR-260504-0001-A.json),装着所有扫描仪不可能知道的事。

{
  "version": 1,
  "id": "9d3a7c2e-8b41-4f0a-b6d5-2e7c9a1f4b30",
  "addedAt": "2026-05-04T10:22:31.004",
  "capturedAt": "2026-04-28T00:00:00.000",
  "favorite": true,
  "albums": ["7c1e…", "b204…"],
  "camera": "Pentax 17",
  "lens": "HD Pentax 25mm f/3.5",
  "film": "Kodak Gold 200",
  "notes": "推了一档。",
  "location": { "lat": 41.9028, "lng": 12.4964, "name": "Rome" },
  "source": {
    "originalName": "scan_0047.jpg",
    "half": "left",
    "splitAt": 1565,
    "rotation": 0
  },
  "width": 1490,
  "height": 2075
}

字段

字段类型说明
versionint恒为 1
idstringUUID v4。缺失时退回文件名
addedAtstringISO 8601。Winder 归档它的时刻。缺失时退回文件修改时间
capturedAtstringISO 8601。按下快门的时刻。未设置时不存在
favoritebool仅在为 true 时写出
albumsstring[]相册 id。仅在非空时写出
camerastring当这一帧写明自己的器材时,覆盖胶卷的
lensstring同上
filmstring同上
notesstring自由文本
locationobject{ lat, lng, name? }latlng 解析失败则整体丢弃
sourceobject裁切的来历。见下文
width / heightint像素尺寸,导入时记录,好让图库流在解码前就能排版

缺失的就保持缺失——Winder 从不写出空字符串、false 的收藏或空的相册列表。

排序优先用 capturedAt,没有则用 addedAt

有两样东西刻意不在这里

胶卷。 一帧属于哪一卷,取决于它待在哪个文件夹里。什么都不写,所以把这两个文件一起移进另一卷的文件夹,就是移动这一帧的全部操作。

路径。 加载时解析,从不存储。

source——一刀的来历

每一帧裁切出来的照片都记得自己从哪来,所以任何一刀日后都不会成为谜。

字段类型说明
originalNamestring它出自哪张冲扫件
halfstringleftrightfull——对应文件名里的 A / B / F
splitAtint分隔条中心在原图上、沿裁切轴的像素偏移。整格导入时不存在
rotationint导入时施加的顺时针角度:0、90、180 或 270。仅在非零时写出

相册成员关系

成员关系记在这里,用的是 id 而不是名字,所以重命名一个相册只需往 albums.json 写一次,而不必扫过图库里的每一个边车文件——而且两个相册可以同名而不会悄悄合并。

指向本图库并不存在的相册 id 会被原样保留。它们匹配不到任何东西,所以毫无代价;一次把定义同步回来的操作,也会把成员关系一并带回来。

写进文件本身的 EXIF

边车文件不是唯一的一份。Winder 会把一段真实的 EXIF 烙进 JPEG,所以照片离开图库之后,依然说得清是什么拍的。

EXIF 标签来自
Make由目录从相机名里拆出的厂商
Model相机名,原样
LensModel镜头
DateTimeOriginalcapturedAt
GPS 经纬度,带半球标记location
UserComment胶片——EXIF 没有胶片标签,就放在人能找到的地方
ImageDescriptionnotes
SoftwareWinder

有三件事会触发写入:归档一张新照片(免费——字节本就在内存里)、以会改变该段内容的方式编辑一帧,以及改动一卷的相机、镜头或胶片,那会重写这一卷上的每一帧。

像素永不被触碰。 Winder 就地替换元数据段,而不是解码再编码——每次改信息都重新压缩,会悄悄把一座图库磨损掉。收藏一帧、或把它加进某个相册,什么都不会重写。

每一次 EXIF 失败都是可承受的,而且没有哪一次值得赔上一张照片:不是可改写 JPEG 的字节、或是已经消失的文件,都原样保留它们本来的样子。

手动编辑

尽管改。解析不了的边车文件绝不会藏起它的照片——这一帧会带着从文件自身日期得来的默认值加载,而应用里的下一次编辑会写回一份干净的文件。

更新于 2026-08-06