Skip to content
MogroWangStudioPublic

About

辑印。本地优先的图像批量添加水印与快速处理工具。

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

辑印 Albumark

轻量 · 本地优先的图像批量水印与快速辑录工具

v1.6.0(2026-10-27) · Vue 3 + TypeScript + Vite · Tauri 2(桌面端)· Capacitor(安卓端)


辑印(Albumark)把「给一批照片加水印、做基础调整、打包交付」压缩成一条流水线: 选择工作目录 → 建工作项目 → 批量导入 → 水印工作室 → 快速辑录 → 打包导出。所有图像处理都在本机 完成,没有任何上传,也没有账号与云端的负担。

功能

1. 工作目录与工作项目

  • 两级结构 + 多工作目录:工作目录是收纳「工作项目」的资料库文件夹, 可以同时记录多个并以列表统一管理(查看路径 / 项目数、一键切换、移除记录不删文件); 添加目录时不再要求空文件夹——已包含辑印项目的文件夹会被自动识别
  • 项目管理:以卡片列出当前目录的全部项目(名称 / 照片数 / 创建时间),一键新建、进入、删除; 删除项目会移入回收站(桌面为系统回收站,安卓为应用内回收站文件夹),不再直接抹除
  • 每个项目是一个文件夹(albumark.json + images/),导入时逐批选择入库方式, 两种方式可在同一项目内共存(缩略图以小图标区分):
    • 复制:照片原文件拷贝进项目,源文件增删不影响
    • 链接:只记录源文件路径,并为内容生成识别码(SHA-256); 源文件失联时一键重新定位,识别码校对通过才重新链接
  • OOBE 首次引导:软件数据位置可选,桌面便携版默认放在 exe 根目录(随 U 盘携带); 安卓端工作目录保存在应用数据目录内
  • 无文件能力的环境(浏览器)提供本次会话的临时项目

2. 批量导入

  • 拖入文件或整个文件夹(自动递归),或用选择器批量选取;仅支持 JPG; 桌面端拖入走原生事件、直接拿文件路径
  • 导入预览窗:选片 / 拖入后先确认张数与文件清单,再决定入库方式(复制 / 链接),确认才写入
  • 从图片链接批量导入(桌面端走 Tauri HTTP,不受浏览器跨域限制)
  • 自动提取 EXIF 摘要:机型、镜头、光圈、快门、感光度、焦距、拍摄日期、作者
  • 左下角信息栏:张数 · 分辨率 · 文件名 · EXIF 摘要

3. 水印工作室

  • 完全独立的页面:脱离照片制作水印,样张画布实时预览; 样张支持滚轮缩放、拖拽平移、双指捏合与双击复位(放大后可平移查看细节); 横屏(16:9)/ 竖屏(9:16)样张随时切换(两张品牌底图,1920×1080 / 1080×1920), 切换后自动复位视图, 便于检查贴边文字与九宫格锚点在窄画幅上的实际效果; 制作结果以预设存入软件数据,工作区面板一键调用
  • 图层类型:文本(字体 / 字重 / 颜色 / 字距 / 行高 / 对齐 / 斜体 / 描边 / 阴影 / 背景填充)、 图片(SVG 矢量栅格化 / PNG / JPG 贴纸)、边框(四边独立宽度与颜色, 向外扩展图片尺寸,可多层叠加成相框)
  • 模板选择器:水印面板选择模板后询问完全覆盖或追加水印层, 作用于当前编辑目标(当前项目的水印或独立水印副本)
  • 文本图层:字体(自动读取系统字体,按中文 / 西文 / 日文 / 韩文 / 等宽分类, 「浏览全部字体」窗口全量列出并以各自字形预览、可搜索,也支持手动键入字体名)、 字重 100–900 无极调节(可变字体完整生效)、颜色、字距、 行高、对齐、斜体、px 字号、描边、阴影、背景填充
  • 锚点定位:九宫格锚点 + 距锚点固定像素距离确定位置(画布显示锚点十字), 所有照片上距离一致,不随图片尺寸或比例缩放;样张与照片预览均可直接拖动水印, 拖动时吸附中线 / 边距 / 其他图层并显示参考线(可在设置中开关)
  • 单独水印:对某张照片开启后使用独立的图层副本——增删改只影响这张照片, 不再应用当前项目的水印,导出同样生效;图库缩略图显示角标标识
  • 按工作项目隔离:水印属于当前打开的那个工作项目,不是整个软件、 也不是整个工作目录:每个项目一份配置(存储键带项目 id),同一目录下的 其他项目、其他工作目录都读不到。增删图层 / 拖动 / 改字只写入当前项目; 切换项目会先把当前改动落盘、再载入那一份,来回切换互不串;新建与删除项目 分别对应「从无水印开始」与「分片一并清除」。作用域由水印 store 自行绑定 当前工作项目,不依赖页面装配顺序。升级时旧数据一次性迁移:上一版按目录 存储的分片并入该目录下第一个打开的项目后删除,更早的单一全局键同样只迁移 一次;已存在项目配置时旧键一律就地作废。面板顶部显示当前项目徽标
  • 图像图层:自定义 SVG(矢量栅格化)与 PNG/JPG 贴纸,可随时替换
  • EXIF 令牌:{Model}、{Aperture}、{DateTime} 等(英文键,插入时显示中文名),导出按每张照片替换; 当前照片缺哪项,内容区常驻警告
  • 碰撞箱贴合文字:包围盒按真实字形度量,所见即所得
  • 平铺整图:间距可调,防裁剪盗用
  • 模板:内置「右下签名 / 全图平铺 / EXIF 参数条 / 细白边框 / 画廊双框」,可保存自制模板

4. 快速辑录

曝光 · 亮度 · 对比度 · 高光 · 阴影 · 色温 · 色调 · 自然饱和度 / 饱和度 · HSL 分色(八色带各自独立调整色相 / 饱和度 / 亮度)· 去雾 · 清晰度 · 锐化 · 颗粒,十三项滑杆 -100~100,外加曲线(RGB 合成通道 + R / G / B 三条单通道,可拖拽的控制点编辑器,单调样条插值,非当前通道以细线衬底便于对照)、 晕影调整组(强度 / 半径 / 羽化 / 形状——椭圆或正圆)与降噪调整组 (强度 + 三种算法:平滑 / 边缘保持(联合双边,默认)/ 中值)。 颗粒为整型混淆的胶片式噪点,无重复纹路。双击滑杆名称复位单项, 双击数值直接键入精确值。默认应用到全部照片;对某张照片开启单独调节后, 它使用独立参数,不再应用全局调节。

白平衡吸管:色温 / 色调下方一键进入取样,在画面上点按中性灰或白色处, 按取样色的三通道差反解色温与色调增量并叠加到当前值——「点哪儿哪儿变中性」, 可反复取点微调;按 Esc 或再次点击按钮取消。

影调:曝光 / 亮度 / 对比度 / 阴影 / 高光不是五段各自为政的运算,而是合成一条 按亮度查询的单调影调曲线(1024 级、逐像素线性插值,色度等比跟随)。 对比度用平滑 S 曲线取代围绕中灰的线性乘法——高对比不再把暗部压成死黑、把高光 推成白块(对比度 +100 时 256 级灰阶仅首尾各 2 级贴边,旧版各 64 级);曝光带 随曝光量介入的高光软肩,白点始终保留在 255;阴影 / 高光各带互补蒙版, 只在中低 / 中高亮度生效,黑场白场端点不动。曲线全程强制单调, 任意极端组合都不会出现反向段或色带。

调节预设:把当前照片的全部调节参数(不含水印与裁剪)存为命名预设, 在可折叠分组里以卡片列表呈现——缩略图用当前照片套上该预设实时渲染, 卡面标注调节项数与保存日期,当前参数与某条预设完全一致时显示「已应用」。 点卡片即套用到当前照片,多选照片时套用到所选全部;卡片右上角菜单可 「应用到全部照片」或删除,预设较多时列表区域独立滚动。预设存于本地, 跨会话保留;图库缩略图右键菜单也可直接套用预设。

撤销 / 重做:标题栏的撤销、重做按钮覆盖调节(全局 + 单独调节)、裁剪、 水印(目录级 + 单独水印)三类编辑;连续拖动滑杆按停顿合并为一步,深度 40 步。 按钮按可用性禁用,悬停提示会说明「撤销调节 / 撤销裁剪 / 撤销水印」, 快捷键 ⌘/Ctrl+Z、⌘/Ctrl+⇧Z(Windows 亦可用 Ctrl+Y);切换项目时历史清空。

图片裁剪:操作面板的独立「裁剪」页,直接在照片上拖动裁剪框 (角 / 边手柄调整、框内拖动移动、三分参考线、实时像素尺寸), 比例预设自由 / 1:1 / 4:3 / 3:4 / 16:9 / 9:16,锁定比例拖拽严格保持; 另有水平 / 垂直翻转与 ±45° 拉直矫正,拉直时框自动避开透明角落; 拉直之后继续拖动选框手柄或切换比例,角度与翻转会原样保留。 裁剪自动应用——调好切到其他页(或按 Esc)即保存生效,可随时回来重调; 随照片独立保存,预览、图库缩略图与导出所见即所得; 水印字号与画布按裁剪后尺寸换算,水印按裁剪后区域定位。 对某张照片开启「单独调节」「单独水印」或做了裁剪 / 翻转 / 拉直后, 图库缩略图会显示对应角标。

5. 预览画布

  • 分层渲染:底图(解码 + 调节)由 Worker 合成缓存,水印叠加层主线程矢量绘制—— 改水印即时上屏,拖动水印只重绘叠加层,全程不掉帧
  • PC 端滚轮 / 触控板捏合缩放,移动端双指捏合;双击在适应窗口与 250% 间切换; 左下角缩放值可点击,弹出预设缩放菜单(50% / 100% / 125% / 150% / 适应窗口); 最小缩放(安全区)可在设置中自定义,预览内容也自动避开系统手势条等安全区
  • 悬浮面板让位:面板展开时照片中心自动偏移到剩余空白一侧并重新适应,收起后平滑归位; 空状态问候页(品牌图标 + 文案)也同样让位
  • 软件自定义右键菜单:预览区(适应窗口 / 100% / 导入 / 收展面板)与缩略图 (设为当前 / 移除)各有上下文菜单;文本编辑场景保留系统菜单以便粘贴
  • 放大后可直接拖拽平移,鼠标中键专用于平移;到边界有橡皮筋回弹, 且图片与操作面板、顶栏、底栏之间保留固定呼吸边距; 放大时自动请求更高分辨率的精修渲染
  • ← / → 方向键顺序切换照片
  • 预览性能档位:自适应 / 极致 / 高质量 / 均衡 / 省电 / 极省,外加自定义档—— 自适应按「照片在屏幕上的实际像素」实时决定渲染分辨率:放大自动补细节、缩小自动 降耗电(640–3200px,且不超过原图);固定档位与自定义滑块则是恒定长边, 自定义可在 600–2400px 间无极调整,Android 等设备可按需调低;导出始终全分辨率

6. 操作面板与导出

  • 悬浮操作面板:水印 / 调节 / 裁剪 / 导出 四个纯图标标签(功能名显示在各页第一行标题), 主题色强调,实底不透明;按住顶栏可拖动,松手按动量吸附左缘或右缘(弹簧动画), 可随时反向拖回;收起后变为贴在吸附一侧的贴边把手;进入工作区管理页面时自动收起
  • 调节面板每一项数值旁带行内重置按钮(偏离归位值时出现)
  • 全部数值控件支持双击键入精确值,触屏上点按数字直接键入;触屏(安卓)与 窄视口下滑杆只认拖动——轨道接不到指针事件,点按不会改动数值, 按住拖动才调整(按在拇指上从当前值 1:1 跟手,按在轨道上拖动则拇指吸附到 手指位置跟随),纵向滑动仍可滚屏;触屏下滑杆两端留边距、拇指与数值热区放大, 曲线画布在底部抽屉布局下缩小居中,色带 / 折叠头 / 重置按钮的触控目标同步放大
  • 图像格式 JPG(质量可调)或 PNG(无损);长边限制(原图 / 2560 / 1920 / 1280 px)
  • 保留 EXIF 元数据(JPG):把源照片的拍摄机型、参数、时间、GPS、版权等信息 写回导出文件——方向按导出结果归一为正立、宽高同步为实际输出尺寸、 加水印前的原图内嵌缩略图自动剥离;含 GPS 等隐私信息,开关默认开启、 可在导出面板一键关闭。PNG 不携带 EXIF,开关随之隐藏
  • 文件名模板:{name} 原名、{index} 序号、{date} 日期 + EXIF 令牌,自动去重
  • 导出方式:ZIP 压缩包(全平台)或文件夹逐张写入(桌面自选目录; 安卓写入公共 Documents/Albumark/ 下按时间命名的文件夹),并行渲染 + 进度条

7. 设置与通用

  • 设置独立页面:外观(主题——跟随系统 / 浅色 / 深色,外加四款取自摄影工艺的 个性主题:暗房(暖黑墙面 + 安全灯余烬)、蓝晒(普鲁士蓝印相)、 纸墨(宣纸 + 朱砂印)、画廊(展墙 + 黄铜牌),色卡点选即换)、 界面字号(小 / 标准 / 大 / 特大,布局真实重排)、 启动动画(勾勒 / 快门 / 显影 / 闪光 / 遮幅 / 对焦 / 推移 / 叠影 八款编排,支持随机、0.8–3.0 秒时长与即时预览,可关闭)、 自定义显示字体(自动读取系统字体并按书写体系分类, 「浏览全部字体」窗口全量列出并以各自字形预览、可搜索)、 预览、水印与导入、数据(桌面)、关于
  • 关于与自动更新:版本信息 + 一键查询 GitHub Releases 最新版;发现新版本可应用内直接更新——下载带进度,Windows 便携版退出后自动替换重启、macOS 打开 DMG、安卓交给系统安装器
  • 照片是唯一焦点:默认浅色纯白、深色纯黑;个性主题整体换气质但依然克制, 预览画布上的参考线与锚点随主题换色;手动主题 / 跟随系统均可

平台差异

能力 桌面端(Tauri 2) 浏览器 安卓(Capacitor)
工作目录 / 项目 ✓ 复制 / 链接共存,目录指向磁盘任意位置 ✗(临时项目) ✓ 复制模式,目录在应用数据目录内
链接入库(源文件路径) ✓ ✗ ✗(无持久源路径)
批量导入文件 ✓(含原生拖入路径) ✓ ✓(文件选择)
链接导入(URL) ✓ 无跨域限制 受目标站 CORS 限制 受目标站 CORS 限制
删除进回收站 ✓ 系统回收站 — ✓ 应用内回收站文件夹
导出文件夹 ✓ 自选目录 ✗(仅 ZIP) ✓ Documents/Albumark/ 逐张写入
导出 ZIP ✓ 另存为 ✓ 下载 ✓ 下载
打开导出目录 ✓ ✗ ✗
窗口外观 ✓ 无边框 + 自绘窗控(macOS 改用系统原生圆角与红绿灯) — 自定义头部
系统返回 Escape 逐级返回 — ✓ 原生返回键 / 手势逐级回退,主界面两次返回退出
状态栏 / 安全区 — — ✓ 内容延伸至系统栏下,安全区自动留白

技术与架构

src/
├─ core/        # 引擎:exif(EXIF 解析)· exifWrite(导出回写 EXIF)· jpeg(JPEG 头部尺寸探测)· tokens(令牌替换)
│               # adjust(像素管线)· layout(图层几何 / 锚点)· draw(水印绘制)
│               # renderer(Worker 通道)· exporter(并行导出 + ZIP)· platform(Tauri/Web 能力适配)
│               # fs(跨平台文件系统抽象:Tauri / Capacitor)· spring(弹簧动画)
│               # updater(GitHub Release 检查更新)
├─ workers/     # render.worker:底图「解码 + 调节」合成;导出时叠加水印与 JPEG 编码
├─ stores/      # Pinia:workspace / images / watermark / adjust / adjustPresets / history
│               # fonts / templates / export / settings / toast
├─ components/  # 标题栏 · 工作区页面(OOBE/目录列表/项目)· 悬浮操作面板 · 预览画布(双层)
│               # 水印工作室 · 图层编辑器 · 曲线编辑器 · 设置页 · 右键菜单 · ui/ 原子组件
└─ styles/      # 设计令牌与基础样式(品牌橙 #FFA72F;浅色纯白 / 深色纯黑,
                # 四款工艺主题:暗房 / 蓝晒 / 纸墨 / 画廊)
  • 图像管线零服务器:预览与导出共用同一套 Worker 渲染代码,所见即所得; 预览底图与水印叠加层分离,拖动水印零 Worker 往返
  • 桌面端 Rust 侧仅三个自定义命令(exe_dir 便携版数据目录、app_data_root 兜底、 move_to_trash 移入系统回收站),其余走官方插件(dialog / fs / http / opener); Windows / Linux 用无边框窗口 + 前端自绘标题栏,macOS 保留原生装饰 (Overlay 标题栏 + hiddenTitle,src-tauri/tauri.macos.conf.json), 窗口圆角与红绿灯由系统绘制
  • 文件 IO 走 core/fs.ts 跨平台抽象:桌面 Tauri plugin-fs(绝对路径), 安卓 @capacitor/filesystem(应用数据目录内相对路径),上层不感知平台
  • 运行时依赖只有 vue pinia exifr fflate lucide-vue-next 与 Tauri/Capacitor 官方包

开发

npm install
npm run dev        # 浏览器开发(http://localhost:5173)
npm run typecheck  # vue-tsc 类型检查
npm run build      # 类型检查 + 生产构建(输出 dist/)

桌面端(Tauri 2,需要 Rust 工具链)

cargo tauri dev    # 或:npm run tauri dev
cargo tauri build  # 产出安装包

安卓端(Capacitor)

android/ 壳工程已随仓库提供(webDir 指向 dist/,不含任何编译产物):

npm run build          # 先产出 Web 资源
npx cap sync android   # 同步 Web 资源与插件
npx cap open android   # 在 Android Studio 中构建运行

持续集成(GitHub Actions)

推送到 main 或打 v* 标签时自动构建,产物在 Actions 页面下载(支持手动触发):

  • Windows x64 便携版:单文件 exe(目标机器需系统自带的 WebView2 运行时)
  • macOS arm64:.dmg 与 .app(未签名)
  • Android:已签名 release APK(项目内置密钥统一签名,可覆盖安装升级)
  • GitHub Release:打 v* 标签时自动聚合三端产物发布(应用内更新的下载源)

macOS 提示「已损坏,无法打开」的修复

应用未做开发者签名与公证,从网络下载的 .dmg / .app 会被 macOS 打上隔离(quarantine) 标记,双击打开时提示「"Albumark.app" 已损坏」。两种修复方式任选其一:

  • DMG 内的修复脚本:打开 DMG 后先把 Albumark 拖入「应用程序」,再双击 DMG 里的 修复已损坏提示.command,按提示完成即可;
  • 终端命令:xattr -cr /Applications/Albumark.app

已知限制(v1.6.0 · 2026-10-27)

  • 仅支持 JPG 输入;导出为重编码 JPG / PNG——JPG 可保留原 EXIF 元数据(不含 XMP), PNG 不携带;Exif 段结构异常的源文件会宁缺毋滥地跳过回写
  • 安卓端无系统回收站,删除移入应用数据目录内的回收站文件夹;「链接源文件」入库方式仅在桌面端可用
  • 大体积 ZIP(数百张以上)在浏览器端会占用较多内存;桌面端后续改为流式写盘
  • 读取系统字体依赖 Chromium 内核的 Local Font Access(WebView2 等), 被拒或不支持时回退到常用字体清单,并可手动键入字体名
  • 检查更新为手动触发,直接查询 GitHub Releases API(网络不可达时会提示失败)

路线图

  • 逐图独立调节(v0.2.0 单独调节模式)
  • 工作区 / 水印工作室 / 锚点定位 / 分层渲染(v0.3.0)
  • 工作目录 / 工作项目两级结构 · 对比度与曲线 · 系统字体(v0.4.0)
  • 安卓完整工作区 · 多目录列表管理 · 面板拖动吸附 · 设置独立页 · 回收站删除(v0.5.0)
  • 安卓持久化与原生返回 · 启动与页面切换动画 · 工作室预览缩放 · DMG 修复脚本(v0.6.0)
  • 1.0.0 正式版:UI 细节打磨——问候页随面板让位 · 面板标签可读性(v1.0.0)
  • 图片裁剪(比例预设 · 直接拖框 · 随照片独立保存)(v1.1.0)
  • 水印单独调节 · 固定像素偏移 · 独立处理角标标识(v1.1.0)
  • 渲染质量五档 + 自定义 · 界面字号 · 启动动画四款 · 应用内自动更新(v1.4.0)
  • 白平衡吸管 · R/G/B 分通道曲线 · 调节预设卡片 · 全局撤销/重做 · 影调曲线重写 · 拉直保留裁剪 · 移除默认水印 · 水印按工作目录隔离 · 工作室品牌样张与竖屏切换 · macOS 原生窗控 · 启动动画八款 / 随机 / 时长与预览(v1.5.0)
  • 自适应预览分辨率 · 拉直在选框缩放 / 换比例后不再重置(v1.5.1)
  • 连点 Logo 随机彩蛋 · 退出项目不再丢清单 / 缩略图与 worker 资源清理(v1.5.2)
  • 导出保留 EXIF 元数据(方向 / 尺寸按导出结果校正,剥离原图内嵌缩略图)(v1.6.0)
  • RAW / HEIC 输入
  • 选区式局部应用
  • 安卓原生分享与相册写入
  • 桌面端流式 ZIP 写盘

© MogroWang Studio · 辑印 Albumark

About

辑印。本地优先的图像批量添加水印与快速处理工具。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages