三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

告别手工抠图!用 LayerDivider 让插画图片自动分层转 PSD

告别手工抠图!用 LayerDivider 让插画图片自动分层转 PSD

告别手工抠图!用 LayerDivider 让插画图片自动分层转 PSD

【免费下载链接】layerdividerA tool to divide a single illustration into a layered structure.项目地址: https://gitcode.com/gh_mirrors/la/layerdivider

你是不是也遇到过这样的场景:拿到一张精美的插画图片,想改其中某个元素的颜色,却因为它是"一张图"而束手无策。要么对着 Photoshop 的魔棒工具一点点抠,抠到眼睛发花;要么花钱请人重绘,一等就是好几天。图片自动分层,这个听起来就很"高级"的需求,如今一个名为 LayerDivider 的开源工具就能帮你轻松搞定——把单张插画直接拆成带独立图层的 PSD 文件,每个元素都能单独编辑。

为什么分层这么重要:一张图 vs 一堆图层

想象一下,一张插画就像一份做好的蛋糕,你想调整奶油的颜色,却只能把整块蛋糕重新做一遍。而分层之后的 PSD 文件,相当于把蛋糕拆成了"奶油层""蛋糕胚层""水果层",想改哪层改哪层。

LayerDivider 正是解决了这个痛点。它能在短短几分钟内,把一张扁平的图片自动拆解成数十个独立图层,输出标准的 PSD 文件,直接用 Photoshop 打开就能编辑。对插画师、UI 设计师、游戏美术来说,这几乎是每天都要面对的需求。

核心原理:像整理调色板一样拆解图片

第一次听说"图片自动分层"时,我也觉得这技术很神秘。其实 LayerDivider 的原理并不复杂,可以用一个生活化的类比来理解:它就像一位训练有素的整理师,把一堆混在一起的乐高积木,按照颜色、形状重新分类摆放。

具体来说,工具内部经历这样几个步骤:

  1. 像素分拣:把图片的每个像素点按 RGB 颜色信息进行聚类分组,颜色相近的像素自动"抱团";
  2. 颜色归并:利用 CIEDE2000 色彩差异公式,判断哪些颜色组之间足够"相像",把它们合并,避免生成太多琐碎的图层;
  3. 平滑处理:对图片做模糊处理,让每个分组的边界更柔和自然;
  4. 重新填色:每个分组内的像素统一填上该组的平均色,得到干净的色块;
  5. 循环迭代:重复上述过程若干次,让分层结果越来越稳定;
  6. 生成图层:基于最终的分组结果,把每一组像素单独拆成一条图层,并计算与原图的色差,补充高光和阴影信息。

整个过程听起来复杂,但运行时几乎不需要你操心,上传图片、点一下按钮,剩下的交给算法就好。

两种分层模式:按颜色拆,还是按对象拆?

LayerDivider 提供了两种"拆图思路",对应不同场景:

色彩聚类模式:适合色块分明的设计稿

如果你的图片色彩对比明显,比如 UI 界面、图标、扁平化插画,用色彩聚类模式最合适。它就像把颜料按色系归到不同格子里,同色系的元素自动进同一层。

对象分割模式:适合元素独立的复杂场景

如果图片里有多个互不相干的物体——一个人物、一辆车、一棵树——那就切换到对象分割模式。它基于 Meta 的 Segment Anything 模型(SAM),能智能识别出图片中的每个独立对象,再按对象拆层,精度相当高。做角色立绘、游戏素材分离时,这个模式几乎是必选项。

十分钟上手:从安装到产出第一份 PSD

LayerDivider 用 Python 开发,带一个 Gradio 网页界面,对新手非常友好,不需要写代码也能用。推荐在 Windows 上安装,步骤如下:

  1. 把项目克隆到本地(需要 Python 3.10.8 以上和 Git):
git clone https://gitcode.com/gh_mirrors/la/layerdivider
  1. 首次使用运行install.ps1,脚本会自动创建虚拟环境并安装全部依赖(如果你用 Python 启动器执行py命令,则改用install_with_launcher.ps1);
  2. 安装完成后运行run_gui.ps1启动本地界面;
  3. 浏览器会自动打开localhost:7860,上传一张图片,点击Create PSD按钮即可。

如果你熟悉 Python,也可以在 Jupyter 里直接调用核心函数,处理逻辑同样简洁:

from ldivider.ld_processor import get_base # 参数依次为:输入图像、循环次数、初始聚类数、色彩阈值、模糊尺寸 df = get_base(input_image, loops=2, cls_num=15, threshold=8, size=5, h_split=1, v_split=1, n_cluster=10, alpha=1.0, th_rate=0.5, bg_split=False)

四个关键参数,决定分层质量的"手感"

LayerDivider 的界面上有几个滑块,很多人第一次用会一头雾水。其实只要理解每个参数在干什么,调起来就不难:

  • loops(循环次数):算法迭代的遍数。默认 1 就够用,追求更平滑的结果可以调到 2~3;
  • init_cluster(初始聚类数量):决定"最多拆出多少层"。数值越大,分层越细碎,适合色彩丰富的插画;
  • ciede_threshold(色彩相似度阈值):判断两种颜色"算不算同一色"。阈值越高,越倾向于合并颜色,图层数量越少;
  • blur_size(模糊尺寸):边缘平滑强度,值越大,色块边界越柔和,但细节丢失也越多。

新手建议从init_cluster=10ciede_threshold=5blur_size=5起步,先跑一遍看效果,再根据图层数量的多少反向微调——图层太多就调大阈值和减小聚类数,图层太少就反过来。

图层模式怎么选:normal 还是 composite?

输出设置里有个很容易被忽略的选项——输出图层模式

  • normal(普通模式):每个颜色组输出 base、bright、shadow 三条普通图层,结构直观,适合大多数日常编辑需求;
  • composite(复合模式):额外生成 screen(屏幕)、multiply(正片叠底)、subtract(差值)、addition(线性减淡)等混合模式的图层。这种模式还原度更高,但图层数量会翻倍,适合对还原精度要求高的场景。

一句话建议:图省事选 normal,要精细还原选 composite。

避坑指南:新手最容易踩的四个坑

坑一:图片太大,处理卡死。算法要对每个像素做聚类,4000×4000 的大图会非常慢。建议先降到 1000~2000 像素处理,得到分层结果后再用原图导出 PSD。

坑二:图层多到爆炸。某些图片拆出 50 多层很正常,但如果层数多到影响编辑,就调大ciede_threshold,让相近颜色合并。

坑三:对象分割模式迟迟没反应。首次使用该模式会联网下载 SAM 模型(约 2.4GB),需要耐心等待,之后就会缓存在本地。

坑四:处理结果有明显的色块边界。增加loops或调大blur_size能明显改善,但注意别调过头,否则会丢失细节。

这套工具能帮到谁?

  • 插画师:把角色立绘拆成底稿、阴影、高光分层,方便单独调整某一处的光影;
  • UI/UX 设计师:把设计稿里的按钮、图标、背景自动分离,快速搭建可复用组件;
  • 游戏美术:把场景元素、道具素材批量拆层,直接导出为 PSD 交给引擎或外包;
  • 电商与产品摄影:给产品图做背景分离和色彩分拣,省掉大量重复劳动。

结语:别把时间浪费在抠图上

分层这件事,技术上早已不神秘,难的是把它做得"开箱即用"。LayerDivider 把复杂的聚类算法和分割模型封装成了简单的按钮和参数,让非技术背景的设计师也能快速上手。虽然它还有提升空间——比如界面目前以英文为主、部分模型需要联网下载——但作为一款免费开源的工具,性价比已经相当高。

如果你也经常为"一张图没法改"而头疼,不妨现在就 clone 下来跑一张自己的图试试。从简单几何图形开始,再逐步挑战复杂插画,你会很快找到调参的手感。别忘了,它完全开源,遇到不满意的地方,你甚至可以直接改代码,让它变得更顺手。

【免费下载链接】layerdividerA tool to divide a single illustration into a layered structure.项目地址: https://gitcode.com/gh_mirrors/la/layerdivider

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表