十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
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深夜十一点你还对着那张插画发呆。甲方要求背景和人物分开每个颜色单独能调你只能掏出钢笔工具沿着边缘一点点描手一抖整条路径推倒重来。这画面做设计或做素材的朋友应该都不陌生。直到我发现了 LayerDivider——一个能把单张图像自动拆成分层结构的开源工具核心就三件事图像分层、色彩聚类、对象分割。你丢进去一张图它吐出一份每个元素独立成层的PSD文件省掉的正是抠图、描边、手动建层这一整套重复劳动。为什么我不再手动抠图了三个让我回不去的理由先声明我不是什么参数党我只关心一件事它到底有没有帮我省时间。实测下来有三个点让我彻底回不去手动流程。因为颜色判断准所以图层边界干净。传统做法用魔棒边缘全是毛刺还得自己羽化。LayerDivider 的思路是先把每个像素按 RGB 值做聚类分组简单说就是把颜色相近的像素归成一家再用 CIEDE2000 这个衡量人眼感知色差的标准把看起来差不多的组合并最后用模糊平滑边缘。结果就是一条干净利落的闭合边界直接能用。因为输出就是标准PSD所以能立刻开工。手动抠图抠完还要自己建图层、命名、排结构。它直接输出带层结构的 .psdbase基础层、bright高光层、shadow阴影层给你分得明明白白还支持 normal 和 composite 两种图层模式后者会自动组合屏幕、正片叠底、减淡、线性减淡这些混合模式后期微调空间更大。因为有两条技术路线所以什么图都接得住。色块分明的插画和 UI 用色彩聚类模式包含多个独立对象的复杂场景就切到对象分割模式它集成了 Segment Anything 模型能识别出图里到底有几个东西。一条路走不通换一条就是。那它真的能自动分层吗别光听我说跟着我实测一遍十分钟见分晓。上手实测十分钟把一张插画拆成可编辑的PSD目标很简单把项目里那张示例图拆出可编辑图层。按准备 → 配置 → 运行 → 看结果四步走。第一步三分钟装好环境打开终端克隆仓库并安装依赖。Windows 用户首次使用直接运行install.ps1之后每次用run_gui.ps1启动 Web 界面浏览器打开 localhost:7860 就能上传图片点按钮生成 PSD全程不用写一行代码。git clone https://gitcode.com/gh_mirrors/la/layerdivider cd layerdivider python install.py python run_gui.ps1 # Windows 下也可以直接双击如果你和我一样想用命令行批处理只需要装好 Python 3.10.8 和 requirements.txt 里的依赖就行。第二步写一个最小的分层脚本这一步是核心。下面这段代码做三件事读图、按颜色聚类分层、拆出三层并保存成 PSD。直接复制保存成test.py就能跑。import cv2, sys sys.path.append(./scripts) from ldivider.ld_convertor import pil2cv from ldivider.ld_processor import get_base, get_normal_layer from ldivider.ld_utils import save_psd from pytoshop.enums import BlendMode img cv2.imread(example_images/sample_input.jpg) rgba cv2.cvtColor(img, cv2.COLOR_BGR2RGBA) # 工具内部要求 RGBA 格式 # 色彩聚类像素按颜色分成12组CIEDE2000阈值6以内的合并模糊半径5平滑边缘 df get_base(rgba, loops2, cls_num12, threshold6, size5, h_split256, v_split256, n_cluster500, alpha100, th_rate0.1, bg_splitFalse) # 从聚类结果里拆出基础层、高光层、阴影层 base, bright, shadow get_normal_layer(rgba, df) # 打包成三层结构的PSD文件 save_psd(rgba, [base, bright, shadow], [base, bright, shadow], [BlendMode.normal, BlendMode.normal, BlendMode.normal], ./output, normal) print(完成去 output 目录找 .psd 文件吧)第三步运行并检查输出运行python test.py几秒后终端打印完成提示output 目录里会出现一个 .psd 文件。你把原图和分层结果并排放一眼会看到每个颜色区域都被单独认了出来不再是一张死的平图。第四步把结果拖进你的设计软件用 Photoshop 打开生成的 PSD图层面板里 base、bright、shadow 三层齐刷刷列在那每个颜色区域都能单独选中、改色、移动。我第一次拖进去的时候愣了一下——这居然不是我自己抠的。进阶技巧官方文档没写的三个调参经验用熟了之后这三条经验能帮你少走很多弯路。loops 别贪多。它是聚类和合并的循环次数2 次边缘就很收敛了开到 3 次以上收益骤减处理时间却线性上涨。追求速度就用 1。init_cluster 越大图层越碎。它是初始聚类数量10 以下适合色块图12 到 15 是插画的甜点区间超过 20 会产生一堆只有几百像素的碎层PSD 体积也跟着膨胀。大图先降采样再上采样。直接跑 4000×4000 的大图会慢得让人失去耐心。先把边长压到 1000 以内处理完导出前再放大回原尺寸时间能省一半以上肉眼几乎看不出区别。避坑指南新手最容易踩的三个坑坑一JPEG 压缩噪声导致分层边缘全是杂点。为什么会发生聚类是按像素颜色分的JPEG 的压缩块会生成大量假颜色。怎么解决换成 PNG 输入或者先用模糊过滤一遍再喂给工具。坑二颜色相近的区域被并成一大块。为什么会发生ciede_threshold 阈值设得太高原本该分开的颜色被判定为差不多。怎么解决把阈值从 8 一路往低调到 5、4每次重跑一次对比直到想要区分的颜色彻底分开。坑三开了 split_bg 背景分离结果前景也被吞了。为什么会发生背景识别靠网格统计前景颜色和背景接近时会被误判。怎么解决先关掉 split_bg 跑一版看效果再决定要不要微调 alpha 阈值而不是一上来就全开。接下来你可以这样做说白了LayerDivider 的价值就是把抠图、描边、建层这种零创造性的体力活压缩成一条命令的时间。剩下的时间你该花在想创意上而不是跟钢笔工具较劲。给你的行动清单克隆仓库把环境装起来拿示例图跑一遍确认输出正常换一张你自己的插画两种模式各试一次用 composite 模式导出一版对比和 normal 的差别把参数调到你满意再考虑批量处理整个素材目录对了从一张最简单的色块图开始最容易建立信心。你准备好动手试试了吗下次加班到深夜的时候希望你已经用上它了。【免费下载链接】layerdividerA tool to divide a single illustration into a layered structure.项目地址: https://gitcode.com/gh_mirrors/la/layerdivider创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表