Skip to content

Releases: Kaiyuan/ezcut

v0.0.23

12 Apr 17:00

Choose a tag to compare

修正文件名过长出现排版错误的问题

v0.0.22

08 Apr 13:56

Choose a tag to compare

  • 图片名称和路径超长时候会隐藏,不会超出容器
  • 字体使用异步加载,加快UI加载

v0.0.21

07 Apr 13:22

Choose a tag to compare

  • 优化性能
  • 增加软件信息

v0.0.20

31 Mar 03:59

Choose a tag to compare

删除 UI 边缘多余的留白

v0.0.18

30 Mar 18:18

Choose a tag to compare

本地字体选择与界面优化

1. 本地字体选择功能

  • 后端集成:在 Rust 层引入了 font-kit 库,新增 get_system_fonts 指令,能够自动扫描并返回电脑上已安装的所有字体(如微软雅黑、Arial、苹方等)。
  • 前端选择器:每个文字水印层现在都有一个“字体”下拉列表。
  • 所见即所得:预览和最终导出都会根据所选字体自动重新计算文字宽度与对齐位置。

2. 界面布局与默认态优化

  • 导出分类迁移:原位于“文件名”下的“导出分类”下拉框已移动至“导出”分组顶部,操作路径更顺手。
  • Resize 状态调整:“修改尺寸”分组现在默认展开,但功能开关初始未勾选,平衡了可见性与安全性。
  • 水印预设更新
    • 颜色默认设为蓝色 (#2574ff)。
    • 位置默认设为居中

3. 多语言支持

  • 已补全所有 5 种语言(中、英、日、韩、繁)中“字体”标签的翻译。

水印与图层分辨率自适应系统

成功实现了水印和图层的全分辨率自适应系统。现在,可以放心地将设置好水印的配置应用到任何尺寸、任何长宽比的图片批量任务中。

1. 从“固定模板”转向“动态映射”

  • 之前的问题:前端生成一张与预览图等大的透明图层发给后端,后端强制拉伸到目标图片。这导致如果目标图片与预览图比例不同(如正方形变宽图),文字会被拉长变形。
  • 现在的逻辑:前端现在会将每一个文字水印层、每一个图片覆盖层作为独立的逻辑对象发送。后端会根据目标图片的实际尺寸,重新计算每一层应该出现的位置。

2. 比例系数自动换算

现在无论怎样尺寸的图片在都会水印都会同比例的显示和输出。

3. 防形变渲染

所有的水印图层在应用时,后端均采用了 保持长宽比 (Aspect Ratio Preserved) 的重采样算法。这意味着水印文字在不同比例的图片上永远不会产生拉伸或压扁的视觉失真。

方案设计:文件名自定义序号规则

本方案旨在丰富文件名导出功能,允许用户在文件名模板的任何位置插入自定义规则的序号。

文件名优化

1. 前端 UI 与文案 (index.html, app.js)

  • [MODIFY] index.html: 在 Filename 分组下增加“起始序号”和“步进”两个数字输入框。
  • [MODIFY] app.js:
    • 更新 tr 文案表,加入 startNumber, step 等翻译词条。
    • 更新 RegexHelpContent,详细说明 {name}, {index}, {timestamp} 等占位符的使用方法。
    • 更新 getPayload,从页面获取新的序号设置并传给后端。

2. 后端逻辑扩展 (main.rs)

  • [MODIFY] NamingOptions: 结构体新增 start_number (u32)step (u32) 字段。
  • [MODIFY] output_name:
    • 将原有固定的 index + 1 逻辑替换为 index * step + start_number
    • 确保 {index} 占位符在 template 中被正确替换。

序号规则说明

  • {index}: 代表当前的序号。
  • 起始号 (Start): 默认为 1。例如设置为 100,则首张图片序号为 100。
  • 步进 (Step): 默认为 1。例如起始 1,步进 5,则序列为 1, 6, 11...

细节功能完善

1. 功能增强

  • 导出格式:在输出设置下拉框中新增了以下格式支持:
    • BMP, TIFF, GIF, TGA。
  • 空列表提示:当列表为空时,现在会显示具体的引导文案:“拖动照片到此处”。

2. 文档修复 (Regex Help)

  • 占位符修复:解决了之前由于翻译解析逻辑导致的 {name}, {index} 等占位符显示为空白的问题。
  • 功能说明更新:在帮助文档中新增了对文件名正则“标志 (Flags)”功能的说明(如 g, i, m, s)。

v0.0.17

30 Mar 01:58

Choose a tag to compare

修复文字水印错位问题

  • 1. 优化水印合成画布尺寸 (app.js)
    • 修改 buildWatermarkData,将 canvas 宽高设为 s.previewImage.naturalWidth/Height
  • 2. 强化坐标渲染优先级逻辑 (app.js)
    • 修改 watermarkModel,确保当 wm.xwm.y 任意一个非空时,优先使用对应坐标而非九宫格对齐
  • 3. 完善前端同步机制 (app.js)
    • 确保手动修改侧边栏 X/Y 数值时,能立刻触发预览更新并在导出时生效

v0.0.16

30 Mar 01:03

Choose a tag to compare

修复错误

  • 修复图片导出错误
  • 修复裁剪,水印等坐标和预览不一致的问题
  • 修复文字水印和图层覆盖选项不支持多国语言的问题

v0.0.15

29 Mar 18:15

Choose a tag to compare

多图层与精准坐标同步功能升级

本次更新大幅提升了 EZCut 的专业排版能力,允许您在同一张图片上叠加任意数量的水印和图层。

🌟 新功能亮点

1. 无限图层叠加

  • 文字水印:点击侧边栏的“+ Add Text”可添加多个独立的文字水印。
  • 图片图层:点击“+ Add Image”可从本地选择多张图片作为覆盖层。
  • 独立配置:每个图层都有自己独立的坐标、缩放、透明度、颜色和对齐方式。

2. 精准坐标控制 (X, Y Sync)

  • 实时同步:在预览区拖拽图层时,侧边栏对应的 X/Y 坐标输入框会实时更新。
  • 精确指定:您可以直接在输入框中输入具体像素值(如 x: 100, y: 200),图层将精准定位。
  • 智能回退:如果您修改了对齐方式(如从“居中”改为“右下”),坐标将自动重置并切换回传统的九宫格对齐模式。

3. 多图层命中算法 (Top-Down Selection)

  • 多层级交互:当多个图层重叠时,点击会优先选中最顶层的元素,确交互的直观性。
  • 手柄优化:每个图层的调整手柄现在包含透明阴影,在深浅色背景下均能清晰可见。

🛠️ 技术变更记录

后端 (Rust - main.rs)

  • 数据解构升级ProcessPayload 现已支持 Vec<OverlayOptions>
  • 逻辑重构process_single_frame 循环应用所有图层,并优先采用显式坐标定位。

前端 (JS - app.js)

  • 状态管理:将单实例状态升级为数组驱动,并实现了动态列表渲染(renderWatermarkList, renderOverlayList)。
  • 坐标同步引擎:实现了 onPreviewMove 中的坐标反向同步逻辑。
  • 水印合成:在导出前,所有文字水印会在前端合成一张高清透明 PNG 模版,确保后端的高速批量处理。

v0.0.14

29 Mar 17:47

Choose a tag to compare

  • 调整点优化,手柄改为 75%透明
  • 预览窗口确保维持 1:1

v0.0.13

29 Mar 17:21

Choose a tag to compare

修复右列 UI,完善预览窗口和调整框

1. 彻底解决右侧侧边栏“内容被切断”

  • 修复方案:重写了侧边栏的排版引擎。
  • 效果:移除了所有会导致内容被“压扁”或“强行适配窗口高度”的 CSS 约束。
  • [!IMPORTANT]

    • 现在右侧设置栏(.settings-card)会根据选项的展开情况自然向下生长
    • 侧边栏整体会自动显示滚动条,确保底部的导出设置、导出按钮永远能够通过滚动完整展现,不会再被切断。

2. 实现交互“层级穿透” (解决裁剪框遮挡)

  • 改进逻辑:调整了预览区域的点击识别优先级。
  • 新规则:手柄 > 水印/图层内部 > 裁剪框内部。
  • [!NOTE]

    • 您现在可以直接点击并拖动位于裁剪框内部的水印或图层。裁剪框不再会“抢走”内部元素的点击权。
    • 只要有手柄(缩放点)重叠,系统会优先响应手柄调整。

3. 操作手柄“视觉尺寸恒定” (超大图适配)

  • 技术突破:引入了动态比例换算算法。
  • 对比
    • 旧版:手柄大小随图片分辨率增加而变得微小(在 4K 图下几乎不可点)。
    • 新版:无论图片是 800px 还是 8000px,显示在您屏幕上的手柄始终保持 14px 的舒适点击尺寸。
  • 视觉强化:手柄改用“白底 + 对应主题色描边 + 核心点”的三层渲染设计,在任何复杂背景下都清晰醒目。