- name
- image-split
- description
- 将图片按网格或按尺寸自动切割成多段。支持水平/垂直切割,智能在空白间隙处分割避免切到文字。自动模式:超过 8000px 才切,每段目标 6000px。适用于长截图拆分、图片分片等场景。
- trigger
- 切割图片|图片切割|切成两半|切成多段|split image|图片太长|图片太大|图片切分
- version
- 1.1.0
- display_name
- 图片智能切割
- platforms
- ["macos","linux"]
- metadata
- {"openclaw":{"requires":{"bins":"[Truncated]"}}}
# 图片智能切割
将图片按 x/y 网格切割或按尺寸自动切割成多段,智能在空白间隙处分割,避免切到文字内容。
## 两种模式
### 自动模式(推荐:agent 拿到图片时优先用这个)
```bash
python3 ~/.ethan/skills/image-split/scripts/image_split.py <image_path> --auto
```
**判断逻辑**:
- 宽和高**均 ≤ 8000px** → 不切,直接用原图
- 宽或高 **> 8000px** → 按每段 **6000px** 切割该维度
阈值和段大小可调:`--threshold 8000 --segment 6000`
| 图片尺寸 | 动作 | 切割结果 |
|---------|------|---------|
| 4000×6000 | 不切 | — |
| 2000×8000 | 不切(=8000 不算超过) | — |
| 2000×8001 | 切(高度超 8000) | 2 段:~6000 + ~2001 |
| 2000×14000 | 切(高度超 8000) | 3 段:~6000 + ~6000 + ~2000 |
| 2000×20000 | 切(高度超 8000) | 4 段:~6000×3 + ~2000 |
| 9000×20000 | 切(宽高均超) | 网格切:宽 1 刀 + 高 3 刀 = 8 片 |
> 切割时会在目标分割线 ±200px 内搜索空白区域(像素方差低的行/列),优先在空白间隙处切割。最后一段若 < 100px 则并入前一段,避免产生 1px 碎片。
### 手动网格模式(指定切几份)
```bash
python3 ~/.ethan/skills/image-split/scripts/image_split.py <image_path> [--x N] [--y N]
```
- `x=0, y=2`:垂直方向切成 2 段(上半 + 下半)
- `x=2, y=0`:水平方向切成 2 段(左半 + 右半)
- `x=2, y=3`:切成 2×3 = 6 块
## 参数说明
| 参数 | 默认 | 说明 |
|------|------|------|
| `image_path` | (必需) | 源图片路径 |
| `--auto` | off | 启用自动模式 |
| `--threshold` | 8000 | 自动模式触发阈值(≤ 此值不切) |
| `--segment` | 6000 | 自动模式每段目标尺寸 |
| `--x` | 0 | 手动模式:水平切割数 |
| `--y` | 2 | 手动模式:垂直切割数 |
| `--output-dir` | 源图同目录 | 输出目录 |
## 输出
切割结果保存在源图片同目录(或指定目录):
- 自动模式 / 仅垂直切:`{原名}_{序号}.png`(如 `talk_1.png`、`talk_2.png`)
- 仅水平切:`{原名}_{序号}.png`
- 网格切:`{原名}_r{行}_c{列}.png`
脚本 stdout 输出每个切片的路径和尺寸信息。
## agent 使用建议
收到图片时,优先用 `--auto` 模式跑一遍:
1. 如果输出「无需切割」→ 直接用原图
2. 如果输出了切片 → 把切片按顺序发给模型,而不是发原图
View on GitHub