v2.0 大版本发布 · 纯 Qt C++ 重写

给你的照片 一个更专业的落款

为照片添加相机品牌边框与拍摄信息水印:自动读取 EXIF、匹配品牌 Logo、套用模板一键导出,完整保留原始元数据。

🪟 Windows 10/11 ⚖ GPLv3 开源 ✓ 免费使用

不确定选哪个?大多数用户请选「安装版」;「便携版」适合 U 盘携带或免安装场景。
安装包暂未做代码签名:首次运行若遇 Windows SmartScreen 提示,点击「更多信息 → 仍要运行」即可。

FrameXT 主界面

效果展示

品牌边框、高斯模糊、经典底部信息带——全部由模板驱动,任意分辨率自适应。

底部边框 · Nikon
底部边框 · Nikon Z 6_2
高斯模糊 · Sony
高斯模糊 · Sony A7 II
底部边框 · Fujifilm
底部边框 · Fujifilm X100F

功能特性

照片发布前的最后一步,都替你想到。

品牌识别

读取 EXIF 自动匹配 20 个相机品牌条目的内置 Logo(Canon / Nikon / Sony / Fujifilm / Leica / 哈苏 / OM System / LUMIX 等),支持品牌别名映射,未知品牌回落兜底标。

拍摄信息水印

机型、镜头、光圈、快门、ISO、焦距逐项开关与排版;内置传感器尺寸库自动换算等效焦距(APSC 1.5×、M43 2×)。

模板系统

内置底部信息带 / 环绕边框 / 高斯模糊三种版式;模板为 JSON 描述、全相对单位,任意分辨率与宽高比自适应;支持导入导出 .ftpl 分享。

元数据保真

导出时按段级复制原始元数据、仅精确改写必要字段,拍摄信息不丢失。

视觉无损批量导出

libjpeg-turbo 编码、质量可调;多线程批量并行,自动命名与冲突保护。

隐私保护

一键移除导出照片中的 GPS 定位信息——分享作品,不暴露行踪。

2.0 带来了什么

不是一次更新,而是一次重写:整个软件从底层用 Qt C++ 重新实现。

01纯 Qt C++ 重构

告别 1.x 的 Flutter + Go DLL(libvips)双层依赖,渲染、元数据、导出统一在一条自主可控的管线里,依赖更少、控制力更强。

02视觉无损导出

修复 1.x 最高赞吐槽「导出画质压缩」:libjpeg-turbo 编码、质量可调,导出即所见。

03不再需要管理员权限

用户数据迁至 %APPDATA%(安装版)或程序目录 Data/(便携版),日常运行零提权;自研容错元数据引擎,修复 Lightroom 样张闪退。

04安装版 + 便携版

安装版提供简体中文向导;便携版解压即用、U 盘随身带、删除即卸载。2.0 独立安装,不影响已装的 1.x。

模板共建

想要新的边框版式?发张效果图给我们。

两种方式获得你想要的模板

自己动手:在「模板管理」中复制内置模板调整参数,无需编程,导出 .ftpl 即可分享;或把效果图与想法发给维护者,合适的话会做成内置模板随软件分发。

✉ [email protected]

开源

免费、开放、全程公开构建。

GPLv3 · 源码托管 GitHub

完整源码以 GPLv3+ 协议发布;从源码构建仅需 Qt 6 与 vcpkg,两个环境变量即可跑起来。

🤖 一次 vibe coding 实践

2.0 的代码由 AI 辅助完成:Claude Code + DeepSeek V4.1 Flash + GLM-5.3-Flash,7 天 58 次提交;需求、设计与像素级验收由人工主导。14 个测试套件与 9 张黄金基准图锚定渲染输出。

历史版本

还在用 macOS,或需要原 Flutter 版?v1.0.5 继续提供下载。

v1.0.5 · Flutter

FrameXT 1.x · 原版

基于 Flutter 构建,是目前唯一支持 macOS 的版本。2.0 与 1.x 可共存安装,随时可以升级体验新版,互不影响。