📷 PhotoMark 更新日志 (Changelog)
本文档记录了 PhotoMark 各版本的主要更新、修复与体验改进。
🐛 [v1.5.1] - 2026-09-06
修复
- 修复导入后预览空白:v1.5.0 的缩略图经 asset 协议读取,但 Tauri 的路径匹配默认不放行点目录,
~/.cache下的缩略图全部被拒绝,且加载失败时预览管线会一直等待。现改回 base64 直传(磁盘缓存保留,重复导入与启动恢复仍跳过解码);预览图加载增加失败与超时兜底; - 修复导出卡住:原图 asset 直读增加 8 秒超时,超时或失败自动回退 Rust 解码路径;水印字体的加载等待加 3 秒上限,不再阻塞渲染;
- asset 协议关闭点目录限制(
requireLiteralLeadingDot: false),位于隐藏目录下的照片也可直接读取。
🚀 [v1.5.0] - 2026-09-06
✨ 新功能
- 水印垂直位置滑杆(-100 ~ +100,0 为默认位置),四种模板都支持,内容不会移出边界;
- 底栏高度滑杆(8% ~ 25%),仅作用于经典底栏模板;
- JPEG 导出画质改为 0–100 连续滑杆,可拖动也可以直接输入数值;100% 使用原有编码路径,画质不变;
- 字体选择新增「系统字体」分组,列出本机安装的字体(font-kit 枚举,Linux / macOS / Windows 均可用),直接用于水印渲染;
- 相框预设:内置经典白 / 深色画廊 / 毛玻璃底栏 / 拍立得四种,也可以把当前配置保存为自定义预设(最多 12 个,可删除)。
🖥 界面
- 环境光颜色可跟随照片主色,强度分强 / 均衡 / 弱三档,可以关闭;
- 玻璃材质按顶栏 / 侧栏 / 提示 / 弹窗分四档模糊深度;模板与背景卡片悬停、选中时显示主题色描边;
- 5 组主题色:琥珀金(默认)/ 曙光橙 / 青瓷绿 / 远峰蓝 / 绯红;
- 环境光斑改为预渲染渐变,应用隐藏或失焦时暂停动画,后台不再占用 GPU;
- 更换应用图标与网页图标。
⌨ 易用性
- 照片列表与设置面板可以折叠,状态会被记住;
- 预览区两侧新增上一张 / 下一张按钮;
- 启动时恢复上次的照片列表和选中位置;
- 键盘快捷键:←/→ 切换照片,Space 按住看原图,F 适应屏幕,+/− 缩放,E 导出当前,Delete 移除当前,? 显示帮助;
- 导出成功的提示中新增「打开所在文件夹」按钮;
- 拖动文件到窗口时显示导入提示;
- 预览区滚轮以光标为中心缩放;
- 设置面板只显示当前模板会用到的选项。
⚡ 性能
- 缩略图写入磁盘缓存(按 路径+大小+修改时间 命名),经 asset 协议读取:导入不再传输 base64 缩略图,同一照片再次导入时直接跳过解码;缓存超过 800 个自动清理;
- 启动时从缓存恢复上次的照片列表,基本无等待;
- 每张照片只读取一次文件(原先三次);镜头数据库进程内只解析一次;
- 原图经 asset 协议直接读取;导出在浏览器端直接编码为目标格式(JPEG 100% 保留原编码路径);
- 尼康字形库与镜头数据库改为按需加载,主脚本从 271KB 降到 68KB(gzip 23KB);
- 毛玻璃背景按图片、尺寸、强度缓存;预览图缓存上限 16 张;
- release 构建启用 thin LTO、单编译单元与符号剥离。
🐛 修复
- 英文界面下同时显示两种焦距时,「等效」字样改为随界面语言显示;
- 切换字体后预览立即生效(此前 Canvas 不会触发字体加载,水印一直使用回退字体);
- 切换语言后画布水印、数值标签与照片列表立即更新,无需刷新;
- 修复竖构图照片在预览区被上下裁切的问题(底栏文字被切、顶边距不可见);
- 竖构图的模板比例修正:经典底栏与画廊相框按照片宽度计算底部区域,拍立得底部留白按实体相纸比例,内容行距统一并居中。
🚀 [v1.4.3] - 2026-08-25
🐛 缺陷修复 (Bug Fixes)
- 修复完整相机厂商名(如
NIKON CORPORATION)无法归一化到镜头数据库 key 的问题; - 修复部分尼康镜头只显示规格(如
18.0-140.0 mm f/3.5-5.6)而不显示正式镜头名(如AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR)的问题。
🚀 [v1.4.2] - 2026-08-25
🎨 界面与交互 (UI & UX)
- 沉浸光感视觉:环境光斑、指针跟随光晕、玻璃拟态与亚克力质感;
- Z 轴空间分层:顶部栏与侧栏悬浮、内容区下沉,层级更清晰;
- 主题切换改为浅色 / 深色 / 系统的图标分段控件;
- 新增危险操作确认弹窗(清空列表、重置参数);
- 页面动效与
prefers-reduced-motion支持。
🐛 缺陷修复 (Bug Fixes)
- 修复拍立得模板在深黑相框下仍显示白色背景的问题;
- 修复深色背景下拍立得签名与日期水印对比度不足的问题。
📦 发布与打包 (Packaging)
- README 补充 AUR 安装说明与徽章;
- 完善 PKGBUILD:source、sha256 校验、依赖修正;
- 发布 AUR 包。
🚀 [v1.4.1] - 2026-08-24
🔎 镜头信息解析 (Lens Metadata)
- 标准 LensID 读取:镜头信息明确从标准 EXIF
0xA434(LensID / LensModel 槽位)读取; - XMP LensID 解析:当标准
LensModel是焦距范围规格(如18.0-140.0 mm f/3.5-5.6)时,自动从 XMPaux:LensID/aux:Lens解析回完整镜头名; - 正式镜头数据库:接入 ExifTool 官方镜头 ID 表生成
src/lensDatabase.json,当前覆盖 1238 条镜头数据,包含 Nikon / Canon / Sony / Sigma / Pentax / Olympus / Panasonic / Minolta / Samsung; - 厂商 + 规格双键匹配:按相机厂商和焦距/光圈规格联合匹配,避免跨厂商同规格镜头串名;同规格多候选时优先官方品牌名;
- 光圈格式兼容:同时支持
f/2.8、F2.8、F4.5-6.3等写法。
🐛 缺陷修复 (Bug Fixes)
- 修复 MakerNotes / XMP 中的数值型
LensID直接作为镜头名显示的问题。
🚀 [v1.4.0] - 2026-08-24
✨ 功能新增与优化 (Features & Improvements)
- 📷 官方 Nikon 视觉字体与机型 Logo 矢量生成系统:
- 原生整合 Nikon D 系列(单反 / F卡口)与 Z 系列(微单 / Z卡口)全世代相机机型矢量排版引擎;
- 全世代双系统字形库:包含 D 系列专属工业模板切缝体(0
9)、个位数旗舰双线空心体(D1D6、D2Hs/D2Xs/D3S/D4S 等专属旗舰字形)、微单 Z 系列双线黑板体(ℤ)、现代几何无衬线数字与罗马世代标(II、III)、复古衬线手写体(Z f、Z fc、Df); - 全自动 EXIF 匹配与智能固件代际标准化:自动解析并标准化 EXIF 中的机身代际信息(如将
NIKON Z 6_2、Z 7_2、Z 6_3解析为官方Z 6II、Z 7II、Z 6III); - 全相框模板深度整合:经典底栏、画廊相框、拍立得即显、极简徽章四大模板无缝替换为原生矢量机型标,支持深浅色与毛玻璃背景自适应变色;
- 纯原生前端零依赖毫秒级渲染:前端内置字形数据与渲染器,打包无需外部 Python 运行环境即可在 Linux / Windows 离线极速运行。
🛡️ 优雅降级与稳定性 (Reliability & Fallback)
- 平滑回退纯文本:若机型不在官方 D/Z 系列字形库支持范围内(如 COOLPIX、Nikon 1、KeyMission 或非尼康相机),自动无缝平滑回退到系统字体纯文本渲染,保障排版一致性。
- 严格限定旗舰字形:仅对单数字顶级旗舰机型应用双线空心字形,普通三位/四位数单反机型(如 D850、D7500、D5600、D300S、D200 等)忠实还原经典工业切缝体数字。
🚀 [v1.3.0] - 2026-08-22
🌐 国际化 (Internationalization)
- 中 / English 一键切换:顶栏新增语言下拉框,支持中文与英文界面,偏好自动持久化;
- 运行时动态翻译:进度弹窗、Toast、取消/关闭按钮、主题文案、错误提示等动态内容均支持翻译;
- 文档国际化:新增
README.en.md与CONTRIBUTING.en.md,中英文文档互相提供入口链接。
✨ 功能与体验改进 (Features & Improvements)
- 极简徽章自适应对比度:自动采样照片右下角亮度,浅色区域使用深色玻璃胶囊+白色 Logo,深色区域使用浅色玻璃胶囊+深色 Logo;
- 补齐 Apple / Zeiss 白色 Logo:新增
apple-w.svg与zeiss-w.svg,修正深色相框与徽章下的 Logo 对比度问题; - 模板缩略图修正:画廊相框与拍立得的按钮缩略图改为按实际渲染几何比例绘制,避免“货不对版”。
🐛 缺陷修复 (Bug Fixes)
- 空白画布修复:未导入照片时隐藏空白预览画布,不再显示默认白色矩形;
- 品牌策略调整:仅保留相机/光学品牌 Logo,移除全部手机品牌(含 Apple)Logo。
🚀 [v1.2.1] - 2026-08-22
🐛 缺陷修复 (Bug Fixes)
- 🖼️ 修复空状态白色矩形:未导入任何照片时不再显示默认 300×150 的空白画布;预览容器会在无照片时隐藏,选择照片后自动显示。
🚀 [v1.2.0] - 2026-08-22
✨ UI 与交互改进 (UI & Experience)
- 🧩 模板可视化卡片:经典底栏 / 画廊 / 拍立得 / 极简微章现在使用 SVG 缩略图预览,选中态更直观;
- 📂 检查器折叠:右侧「相框设置」各分组支持点击标题折叠/展开,长面板不再只能整页滚动;
- 👁 原图对比:预览工具栏新增「👁 原图」按钮,按住即可查看未经相框处理的原始照片;
- 🔍 预览平移:放大超过 100% 后,可直接在预览区拖拽平移画面;
- 🎞️ 队列拖拽排序:左侧照片列表可拖拽调整顺序,缩略图摘要中显示分辨率;
- 🔔 通知分级:Toast 区分成功/错误/信息三种样式,并支持连续提示自动刷新;
- 🌗 跟随系统主题:主题按钮支持 深色 → 浅色 → 跟随系统 循环切换;
- ✍️ 字体族选择器:新增 Inter/系统/衬线/等宽字体族选择,并按配置持久化。
🚀 [v1.1.1] - 2026-08-22
✨ 功能新增与优化 (Features & Improvements)
- 🎨 自定义背景色入口:新增「自定义颜色」背景选项,修复了代码支持但界面无法选中的断点;
- 💾 配置持久化:相框模板、质感、Logo、参数显示、导出设置(格式/画质/文件名模板)现在会自动保存,重启后恢复;
- 📝 文件名模板:导出支持
{filename}/{model}/{make}/{lens}/{date}/{index}/{width}/{height}变量,默认{filename}_framed; - 🗂️ 批量导出防覆盖:输出目录存在同名文件时自动追加
(1)、(2)…,避免互相覆盖; - 🖥️ 浏览器预览模式:非 Tauri 环境可直接通过文件选择器/拖拽导入 JPG/PNG/WebP,并在页面内解析 EXIF、预览和导出(工作区已有改动,随本版本纳入)。
🐛 缺陷修复 (Bug Fixes)
- 🧠 批量导出内存优化:改为逐张渲染、逐张写盘,避免将所有全尺寸 base64 一次性驻留内存;
- ❌ 取消与失败明细:批量导出支持中途取消,失败照片会列出文件名与错误原因(前 8 条);
- 📷 TIFF 支持真实落地:桌面端补齐 TIFF/TIF 解码支持,README 明确浏览器模式仅支持 JPG/PNG/WebP;
- 🎞️ 拍立得背景修复:深黑与自定义背景色在拍立得模板中正确生效。
🚀 [v1.1.0] - 2026-08-18
✨ 功能新增与优化 (Features & Improvements)
- 🎛️ 自定义焦距显示模式:
- 新增「焦距显示方式」配置项,支持三种呈现模式:
- 镜头实际物理焦距(默认):忠实还原镜头本身的物理光学焦距(如
35mm、50mm); - 35mm 等效焦距:展示按传感器画幅换算后的 35mm 全画幅等效焦段(如
52mm); - 两者同时显示:当实际焦距与等效焦距不同时,合并呈现为
35mm (等效 52mm);若相同(全画幅)则自动精简为单一焦距。
- 镜头实际物理焦距(默认):忠实还原镜头本身的物理光学焦距(如
- 新增「焦距显示方式」配置项,支持三种呈现模式:
- ✍️ 全面升级自定义签名与拍摄时间排版:
- 画廊相框 (
Gallery Border):完整接入自定义签名与拍摄时间,自适应居中双行排版。 - 拍立得即显 (
Polaroid Instant):重构底部排版,左侧支持显示第 3 行手写/印刷签名(✍️ Photo by Alex);右侧支持同时呈现品牌矢量 Logo 与复古胶片等宽时间戳,彻底解决此前有 Logo 时时间被覆盖的问题。 - 经典底栏 (
Classic Bottom Bar):右侧副信息支持同时展示拍摄时间与自定义签名(Photo by Alex • 2026.08.18 16:30:20)。 - 极简微章 (
Minimal Badge):水印胶囊同步支持同时挂载签名与拍摄时间。
- 画廊相框 (
- 🖼️ 效果演示样张嵌入:
- 项目根目录新增
docs/assets/静态资源库,并在README.md核心特性下方嵌入高清横/竖构图实拍演示样张。
- 项目根目录新增
🐛 缺陷修复 (Bug Fixes)
- 修复 APS-C 焦距换算错误:
- 修复读取 APS-C 画幅照片时焦距被强制乘以 1.5 转换系数的 Bug,默认优先展示镜头标称实际光学焦距。
- 纯净排版与品牌兜底优化:
- 移除无相机制造商信息时强制兜底为索尼 Logo 的逻辑,对于无 EXIF 或非相机来源图片自动隐藏 Logo 与分割线;
- 移除机身型号为空时多余的
'Camera'占位文字。
🚀 [v1.0.1] - 2026-08-18
🐛 缺陷修复 (Bug Fixes)
- 解决 AppImage 独立运行白屏与连接错误:
- 修复脱离开发环境独立启动 AppImage 时出现的
Could not connect to localhost: Connection refused错误。 - 重构打包构建管线,统一采用
yarn tauri build --no-bundle,将前端 HTML/CSS/JS 与 SVG 矢量资源完整内嵌至 Rust 原生二进制内部,实现 100% 离线自包含运行。
- 修复脱离开发环境独立启动 AppImage 时出现的
✨ 功能新增与优化 (Features & Improvements)
- 🪟 全平台 CI/CD 自动化构建:
- 接入 GitHub Actions 多平台矩阵,自动构建并发布 Linux 通用 AppImage(
photomark-linux-x86_64.AppImage,仅 4.8MB)与 Windows 安装包(PhotoMark_1.0.1_x64-setup.exe与 MSI)。
- 接入 GitHub Actions 多平台矩阵,自动构建并发布 Linux 通用 AppImage(
- 🖼️ 原画无损画质直通 (Master Export):
- 彻底去除中间二次有损压缩环节,直接流式读取未解压的原始高分辨率照片数据。
- 支持 PNG(100% 逐像素点对点数学无损) 与 JPEG 100% 满品质 原画输出。
- 🎨 自研多级金字塔高斯毛玻璃引擎:
- 实现纯 TypeScript 3-Pass 快速卷积高斯模糊算法,突破 Linux WebKitGTK 下 Canvas 硬件滤镜限制,输出深邃通透的真毛玻璃背景。
- 支持毛玻璃模糊强度(15 ~ 150)实时滑动调节。
- 🔍 全局 UI 缩放与多屏适配:
- 顶部导航栏新增界面自由缩放控件(80% ~ 150%),完美适配 HiDPI 2K/4K 视网膜大屏与轻薄本。
- 🌓 深浅双色主题与交互调优:
- 修复深色模式下下拉选择框
<select>与<option>的字体对比度。 - 每个调节滑块均配有独立
↺恢复默认值按钮与全局重置全部参数按钮。 - 导入区域与选择框移除已不适用的 RAW 扩展名提示。
- 修复深色模式下下拉选择框
🌟 [v1.0.0] - 2026-08-18
初始发布 (Initial Release)
- 基于 Tauri 2.0 + 纯 Rust 图像内核 + 现代化前端 净室重构。
- 内存占用仅 25MB ~ 30MB,极速秒开。
- 纯 Rust
kamadak-exif解析相机机身、镜头、曝光三要素与拍摄日期。 - 内置 4 大相框模板(经典底栏、画廊相框、拍立得即显、极简微章)。
- 内置 20+ 款主流相机品牌矢量 Logo 自动匹配。
- 基于 Rust Rayon 多核并行批量导出与实时进度条。
- 采用 GNU General Public License v3.0 (GPLv3) 开源协议,并附加品牌商标免责声明。
Full Changelog: v1.5.0...v1.5.1