如何把一张图片的多个部分批量切割出来?(详见描述)

需求

如何把一张图片的多个部分批量切割出来?

要分离出来的图片的特点形状相同,且按周期排布。我想把它们批量提取成单独的图片。

没想好怎么用一句话把需求描述清楚,例子是这样的:

这是游戏 Gremlins, Inc. 的艺术设定集,这个图是我产生这个问题的源头,他把小魔怪的表情平铺在一页纸上了,我想批量提取这些表情

再延伸一下,还可以批量截取 app 图标,方便做 app 测评展示之类的。

有规律的还好,稍微剪裁一下,然后根据像素分割

1 个赞

可以试试这个

2 个赞

万能的 Python 脚本是解决这个问题自定义效果最好的方法,前几个月我才做过几乎一样的事情,只不过切的是细胞照片不是这种图。

嫌逻辑麻烦直接 chatgpt 生成代码就好,可以用cv2之类的库。

1 个赞

还有个方法是用 ImageMagick,虽说是命令行操作,上手难度有点大,但可编写成脚本,方便批量处理图片。

裁剪图片的命令格式是:

convert [原始图片] -crop [切块长度]x[切块宽度] 输出文件 

例如,将 source.png 裁剪为 200 × 100 的小图,可执行命令:

convert source.png -crop 100x100 dest.png 

输出文件的文件名为 dest-1.pngdest-2.png、……

参考资料:

2 个赞

感谢大家提供多种思路

Photoshop

刚学习了一个 Photoshop 的方法,实战一下
这个图片是游戏 into the breach 中的截图

按 Ctrl+R 出现标尺,拖动标尺生成参考线

点击「基于参考线的切片」

按 Ctrl+Shift+Alt+S,全部导出或者按 shift 选中需要的切片导出就行了

导出效果

然后就可以制作游戏图鉴啦(Notion 例)

加个双链 闲聊-为游戏做笔记-20221011

segment anything

试玩了一下 segment anything demo,AI 的效果很震撼

image

总结:
感谢大家提供多种思路

Qingwa 提供的「分割图片」能切割最基础的图片,需要提前把图片的边缘裁剪完,才能较好的直接切割,缺点是没办法切小框(此方式 Photoshop 的切片工具也有)

Debatrix 提供的「Segment Anything」功能很强,目前可以直接使用官网的 demo,提取能力更强(可以提取不规则图形),稍微带点毛刺。

mnvacd 提到的 Python 脚本需要提前量好图片的尺寸和空间周期即可

VIctoryRoad 提到的 ImageMagisk 也是提前量好图片的尺寸和空间周期即可

DavidJoy 提到的 Photoshop,优点是容易上手,缺点是依然需要一些人工对齐操作,只能提取矩形图片。

Dog 提到的 PngSplit.exe,特点是先把纯色背景扣掉变成 png,然后就可以用软件一键提取了,适合纯色背景的图片

1 个赞

对于你提到的这些纯色背景的,有个特别方便的小工具。
叫做:PngSplit.exe
图片

用法示例:

  1. 首先对图片进行一下预处理,将背景纯色透明,裁掉边,保存为png(ps或ppt或其他图片编辑器)

  1. 把图片拖到左侧区域,右键,选择导出所有子图
    图片

  2. ok了,看看结果

这比你拉线啥的快多了 也准确多了

1 个赞

额,不过实测这俩场景不合适。
表情包里有的表情头身是分离的,提取出来也就分离了。而且内容和背景缺乏差异性,会造成大量错误。

而app页面存在很多文字,这些文字会导致pngsplit 报错,导出失败

1 个赞