图库格式
一座 Winder 图库就是一个不打开应用也能读懂的普通文件夹。没有数据库,没有私有封包,也不需要「导出」按钮——因为从来没有什么被关进去过。
这一章是参考手册。Winder 写下的每一个文件都记录在此,所以你可以用脚本读一座图库、手动修一座图库,或者写一个说同样格式的工具。
目录树
Winder Library/
library.json ← 格式标记
settings.json ← 扫描尺寸、输出质量、上次器材
albums.json ← 相册标签
WDR-260504-0009-F.jpg ← 不属于任何胶卷、散落在根目录的一帧
WDR-260504-0009-F.json ← 它的边车文件
Rome, May '26/ ← 一卷;文件夹名即胶卷名
roll.json ← id、创建日期、胶片、相机、扫描信息
WDR-260504-0001-A.jpg ← 扫描件 0001 的左半
WDR-260504-0001-A.json ← 这一帧的边车文件
WDR-260504-0001-B.jpg ← 右半
WDR-260504-0001-B.json
Roll 260806/ ← 没人起名的一卷:以日期命名的文件夹
roll.json ← …里面写着 { "name": "" }
.trash/ ← 所有删除都落在这里
根目录下住着四样东西,其余的要么是胶卷文件夹,要么是散落的照片。
| 文件 | 是什么 |
|---|---|
library.json | 格式标记。有它,这个文件夹才是一座图库 |
settings.json | 扫描尺寸、输出质量、记住的器材 |
albums.json | 相册定义——id、名称、创建日期 |
roll.json | 每个胶卷文件夹一份:身份、胶片、相机、扫描信息 |
<帧>.json | 每张照片一份,就在它旁边 |
照片文件名
WDR-260504-0001-A.jpg
│ │ └── 哪一半:A = 左,B = 右,F = 整格
│ └─────── 当天的序号,补零到四位
└────────────── 归档日期,yyMMdd
在任何文件浏览器里都按时间排序——这正是「文件优先」的意义。边车文件同名,扩展名换成 .json。
识别的图片扩展名:.jpg、.jpeg、.png、.webp、.bmp、.tif、.tiff。Winder 写出 JPEG,但会读取并归档其余格式。
library.json
{
"version": 2,
"app": "winder",
"createdAt": "2026-05-04T10:22:31.004"
}
含有这个文件的文件夹就是一座 Winder 图库;把应用指向它会原样接管,而不会在里面再套一层。
格式版本
| 版本 | 形态 |
|---|---|
| 1 | 每个相册一个文件夹,里面的 album.json 携带封面 |
| 2 | 文件夹是胶卷(roll.json);相册是 albums.json 里的标签 |
版本 1 的图库会在第一次扫描时迁移:每个含有 album.json 的文件夹被当作胶卷读入并改写为 roll.json,id 与创建日期一并带过,cover 被丢弃。随后那个已被取代的 album.json 会被删除——留着它,只会让此后每一次扫描都去读一个不再描述任何东西的文件——最后 library.json 升到版本 2。
Winder 为自己立下的规矩
以下是另一个读写这个文件夹的工具可以依赖的保证。
写入是原子的。 每个 JSON 都先写成 <名字>.tmp 再改名就位,同步客户端永远看不到半个文件。照片的 EXIF 重写走同一套动作。
没有硬删除。 删除一帧或一卷,只是把它改名移进 .trash/,胶卷还会附上时间戳。什么时候清空由用户决定。删除相册是那个证明规则存在的例外:相册不拥有任何文件,所以它删掉的永远只是一个词。
文件夹才是真相,每次回到前台都重读。 应用每次回前台都会重新扫描目录树,因为另一台设备可能已经改过它。跨启动不缓存任何东西。
一个坏文件绝不该赔上一张照片。 损坏的边车文件、解析不了的 albums.json、被手改坏的 settings.json——每一个都退回默认值,照片照常加载。缺失的 id 会被重新生成并写回。
未知字段会活下来。 Winder 读它认识的字段,其余用默认值。边车文件里指向本图库并不存在的相册 id 会被原样保留:它们匹配不到任何东西,所以毫无代价;而一次把定义同步回来的操作,也会把成员关系一并带回来。
路径从不落盘。 一帧照片在磁盘上的位置、它属于哪一卷,都是从文件实际所在之处读出来的。把 .jpg 和它的 .json 一起移进另一卷的文件夹,这一帧就换了胶卷。
图库里没有什么
任何关于应用而非照片的东西都留在设备上:主题、语言、应用图标、这块屏幕上图库流的列数,以及那个记着图库在哪的书签。同读一座图库的手机和 Mac,各自保留自己的那一份。
更新于 2026-08-06