跳到主要内容

图片分割

可调用节点 v1.1.0

图片批量分割 | 九宫格与自定义行列网格(1×1~10×10)切割、网格线实时预览、多图批量、碎片输出到源目录 | 支持右键/快捷键/卡片触发,可被其他脚本联动调用

脚本能力

直接启动支持 右键启动支持 快捷键启动支持 超级复制启动不支持 定时任务不支持 可被其他脚本调用是 依赖其他脚本否 图形化启动界面不支持

将图片按九宫格或自定义网格批量切割,碎片保存到源图片目录。


核心特性

  • 网格预设:2×2、3×3(九宫格)、4×4、2×3、3×2、1×3、3×1、1×1、5×5 一键切换
  • 自定义行列:列数、行数 1~10 自由调节
  • 网格线实时预览:图片上叠加分割线,分割前即可确认效果
  • 多图批量:一次性添加多张图片,点「确定分割」统一处理
  • 像素不丢失:不能整除时自动把余数分给末尾的块,保证完整覆盖原图
  • 尺寸安全:列/行数超过图片宽高时自动收敛,避免产生 0 像素碎片
  • 输出到源目录:碎片命名为 原名_split_1.png、原名_split_2.png …
  • 配置自动记忆:行列设置自动保存,下次打开沿用
  • 离线可用:界面与渲染全部本地完成,无任何外部依赖

脚本演示

图片批量分割演示


安装方法

本脚本的运行环境、依赖组件及图形化窗口均依赖「不忙脚本盒子」,建议仅通过盒子安装和使用。

前置条件:安装好 不忙脚本盒子

  • 打开盒子 → 脚本市场 → 搜索 「图片分割」
  • 点击「安装」,等待安装完成

手动安装:需自行安装 Node.js >= 16,在脚本目录执行 npm install && node main.js。


使用方式

  • 打开窗口(任意方式都会弹出配置窗口)

    • 在盒子主界面点击「图片分割」卡片
    • 在盒子「热键管理」为该脚本绑定快捷键后按下
    • 在文件夹中选中图片 → 右键 → 不忙脚本盒子 → 图片分割
  • 添加图片(三选一,可混合)

    • 点「添加图片」:打开系统文件对话框,可多选(记录源目录,输出到源目录)
    • 点「选择图片」:用系统文件选择器多选
    • 直接把图片拖进预览区
  • 设置网格

    • 点预设按钮(如 3×3 九宫格),或拖动「列数 / 行数」滑块
    • 预览区实时显示网格线;下方显示实际生效的网格与块数
  • 分割

    • 点「确定分割」,逐张处理并显示进度
    • 全部成功:提示「已输出 N 块」,窗口自动关闭;有失败则保留窗口显示原因

🔗 作为节点被调用(脚本联动)

本脚本已声明为节点([bmscriptsbox.node] enabled = true),可被其他脚本通过 /api/link 同步调用:不弹窗口、不等待输入,静默处理并把结果写入信封。

  • 输入:target_paths(图片路径数组)
  • 运行参数

    参数 类型 默认 说明
    cols int 3 列数(1~10),超过图片宽度自动收敛
    rows int 3 行数(1~10),超过图片高度自动收敛
    suffix str _split 碎片文件名前缀,输出 原名+suffix+N.png
  • 输出(信封)

    键 类型 说明
    code int 0 成功;非 0 失败
    msg str 结果说明
    files list 全部碎片文件路径列表
    count int 碎片总数

调用示例(调用方脚本):

import json, sys, requests

env = json.load(open(sys.argv[1], encoding='utf-8'))['environment']
r = requests.post(f"{env['api_base']}/api/link", json={
    "script_id": "a4b8c2d9-1e5f-3a7b-6c4d-8e9f0a1b2c3d",   # 本脚本 id
    "data": {"target_paths": ["C:/a/photo.jpg"]},
    "params": {"cols": 3, "rows": 3, "suffix": "_split"},
}, timeout=3600)

result = r.json()["result"]
if result.get("code") != 0:
    raise RuntimeError(result.get("msg"))
print(result["files"], result["count"])

修改 TOML 后需在盒子中重新安装 / 更新本脚本,节点声明才会生效。


💡 使用提示

  • 通过右键/快捷键触发时,已在文件管理器中选中的图片会自动带入窗口。
  • 碎片写入各图片所在目录;用拖拽添加(无源目录)的图片,碎片会写入 %USERPROFILE%\Pictures\。
  • 编号按从左到右、从上到下排列;重复分割会覆盖同名碎片。
  • 输出固定为 PNG 格式(保留原图色彩)。

🖥️ 环境要求

项目 要求
操作系统 Windows 10 1803+(64 位)
运行环境 Node.js >= 16(盒子自动下载)
外部工具 webview-cli(盒子自动下载)
运行依赖 @napi-rs/canvas(盒子自动安装)

更新日志

  • v1.1.0(当前最新版)
    • 界面重写为本地设计系统,去除 Tailwind CDN,改用 webview-cli 独立窗口(完全离线)
    • 服务端动态端口、移除 PID 单例与任意路径读图,静态访问加越界校验
    • 支持多图批量,碎片由服务端直接保存(原为浏览器多次下载)
    • 修复不能整除时丢像素:余数分配给末尾块,完整覆盖原图
    • 修复列/行数超过图片尺寸产生 0 像素碎片:自动收敛并在界面提示
    • 修复参数 JSON 读取与节点信封,声明为节点脚本(cols / rows / suffix)

评论