教你用脚本查找并删除文档中的所有空图层,清理图层面板保持整洁
教你用脚本查找并删除文档中的所有空图层,清理图层面板保持整洁
大家好,这里是甜姐姐。图层面板乱成一锅粥,是不是很多小伙伴的日常?做完图一看图层:一大堆“图层1副本”、“图层2副本”,还有一堆啥都没有的空图层,跟没睡醒似的躺在那里,却还占着位置。
今天甜姐姐就带你玩点看起来很高级,其实挺简单的小技巧:用脚本一键查找并删除所有空图层,让你的图层面板秒变“强迫症福音版”,干净又清爽。
别被“脚本”两个字吓到,它对你来说就像是PS里的小机器人:你教它一次,它帮你干活一辈子。我们这篇就是教这个机器人:帮我把所有空图层都删了,谢谢!
一、先搞清楚:什么是“空图层”?为什么要删?
1. 什么叫“空图层”?
简单说,就是里面啥像素都没有的图层:
-
新建了一个图层,结果什么也没画 -
原来有东西,后来全擦掉了 -
复制出一堆图层,后面用不到又懒得删
这些图层在图层面板里看着在那儿,但其实就像空纸片,图像里一点贡献没有。
2. 为什么要清理空图层?
- 图层面板更清爽
:找图层不至于来回抓瞎 - 提高效率
:特别是几十上百图层的大工程,少一点垃圾图层就少一点干扰 - 方便交接文件
:给别人源文件,看起来就贼专业
小提示:觉得现在只是一点点乱?那只是因为你还没做过那种四五十图层的大图,一旦堆起来,空图层真的会变成“精神污染级别”的存在。
二、我们要做的事:让脚本自动帮你删空图层
先说目标,再讲方法,这是甜姐姐一贯套路。
目标:让PS里的一个脚本,自动做这几件事:
-
从当前文档里,把所有图层翻个底朝天检查一遍 -
遇到完全空的图层,就自动删掉 -
遇到图层组(文件夹)里的空图层,也一律处理
你只要点一下脚本,它就帮你把这套操作全干了,跟让小助手打扫卫生一样。
注意:这个脚本只删真正空的图层,不会删有图像、有样式、有蒙版的图层,所以不用太担心“误杀”。
三、先学会打开脚本面板(基础铺垫)
1. 找到脚本入口
在 PS 里,脚本大本营在这里:
-
菜单栏点:文件 > 脚本 -
里面会看到一些自带脚本,比如“图像处理器”等
我们写好的脚本可以通过两种方式使用:
- 临时运行:
直接“文件 > 脚本 > 浏览…” - 长期驻场:
把脚本放到 PS 的脚本目录里,下次就能在菜单里直接点到它
小技巧:如果你经常要用,可以再搭配一个动作 + 快捷键,做到按一次键就“全图清理”。后面甜姐姐会顺带说一下。
四、脚本代码长啥样?(别慌,看完你会觉得它并不难)
下面是一个最常用的“删除所有空图层”脚本。你只需要复制它,不用完全看懂每一行,就能用起来。
// 删除当前文档中所有空图层(包括组内)
// 作者:甜姐姐
// 递归遍历图层集的函数
function deleteEmptyLayers(layerContainer) {
// 从后往前遍历,防止删除时索引混乱
for (var i = layerContainer.layers.length - 1; i >= 0; i--) {
var lyr = layerContainer.layers[i];
if (lyr.typename === "ArtLayer") {
// 普通图层
if (isLayerEmpty(lyr)) {
lyr.remove();
}
} else if (lyr.typename === "LayerSet") {
// 图层组,先处理组内
deleteEmptyLayers(lyr);
// 如果组里已经空了,而且没有蒙版/样式,也可以顺便删组
if (lyr.layers.length === 0 && !hasUsefulStuff(lyr)) {
lyr.remove();
}
}
}
}
// 判断普通图层是否为空
function isLayerEmpty(layer) {
// 锁定的跳过(避免误删你特意锁住的图层)
if (layer.allLocked) return false;
// 如果图层是不可见的,仍然判断是否有内容
var dup = app.activeDocument.duplicate(); // 复制一份文档做检测
dup.activeLayer = dup.layers[layer.itemIndex - 1];
var hasPixels = true;
try {
dup.selection.selectAll();
dup.selection.copy();
// 如果复制失败会报错,用这个判断是否有像素
} catch (e) {
hasPixels = false;
}
dup.close(SaveOptions.DONOTSAVECHANGES);
return !hasPixels;
}
// 判断图层组是否有“有用的东西”(例如蒙版等)
function hasUsefulStuff(layerSet) {
// 简单判断:如果有图层蒙版就认为有用
try {
if (layerSet.layerMaskDensity !== undefined) {
return true;
}
} catch (e) {}
return false;
}
// 主逻辑:判断是否有打开的文档
if (app.documents.length > 0) {
app.activeDocument.suspendHistory("删除空图层", "deleteEmptyLayers(app.activeDocument)");
} else {
alert("没有打开的文档哦~");
}
读不太懂没关系,把它当成一段“咒语”就行,我们重点是学会怎么给它找个地方住、怎么把它叫出来干活。
五、一步一步:如何把脚本装进 PS 里
步骤一:新建一个空白文本文件
-
在电脑上随便一个文件夹里(比如桌面)右键 → 新建 > 文本文档 -
先随便叫个名字,比如:deleteEmptyLayers.txt -
用记事本或任何文本编辑器打开它
步骤二:把脚本代码复制进去
-
把上面那整段代码全部选中并复制 -
粘贴到刚才的新建文本文档里 -
保存(Ctrl+S)
步骤三:修改后缀名为 .jsx
-
关闭记事本 -
在文件夹里找到刚才那个 deleteEmptyLayers.txt -
重命名为:deleteEmptyLayers.jsx
如果你改不了后缀名,说明系统把后缀隐藏了,可以在“文件夹选项 > 查看”里勾选“显示已知文件类型的扩展名”。不想折腾的话,直接在保存的时候就选“所有文件”,文件名写成 deleteEmptyLayers.jsx 也行。
六、两种使用方式:临时用 VS 长期驻场
方式一:临时用一用(简单粗暴)
-
打开 PS,并打开你要清理的那个文档 -
菜单栏点:文件 > 脚本 > 浏览… -
选中刚才创建的 deleteEmptyLayers.jsx文件 → 确定
然后你会发现,图层面板里空图层“刷”地一下就没了,像刚拖完地的房间一样清爽。
方式二:长期驻场(放进 PS 的脚本目录)
如果你觉得这个功能很香,经常要用,可以把脚本放到 PS 的专用目录里:
-
找到 PS 的安装路径(大概类似这样): -
Windows: …\Adobe\Adobe Photoshop XXXX\Presets\Scripts\ -
Mac: /Applications/Adobe Photoshop XXXX/Presets/Scripts/ -
把 deleteEmptyLayers.jsx拷贝到这个Scripts文件夹内 -
重启 Photoshop(这步很关键,不重启它不知道有新脚本) -
重启后,在菜单:文件 > 脚本 里,你会直接看到这个脚本的名字
小技巧:脚本名字就是文件名,所以你可以把它改得更好认一点,比如:删除空图层_一键清理.jsx,这样菜单里一眼就能认出来。
七、进阶一点:给脚本绑定快捷键,一键秒清
脚本本身不能直接设快捷键,但我们可以用动作做个“壳”,再给动作设快捷键。
步骤一:录一个动作
-
打开 PS 的动作面板:Alt+F9 -
新建动作组(可选):点下方小文件夹图标,命个名如“清理类” -
点“新建动作”按钮,取名:删除空图层,在“功能键”里选一个你顺手的,比如 F3 -
点“录制” -
现在执行一次脚本: -
如果你把脚本放在 PS 目录里:文件 > 脚本 > 删除空图层_一键清理 -
如果没放:文件 > 脚本 > 浏览… 手动选 -
执行完脚本后,在动作面板里点“停止”按钮
步骤二:以后怎么用?
以后只要:
-
先打开要清理的文档 -
按你设好的快捷键,比如:F3
空图层就会自动全部清理掉,整个过程不超过一秒,爽得不行。
八、常见问题 & 小坑提醒
1. 会不会把有内容的图层删掉?
脚本是通过复制文档、尝试复制像素的方式判断图层是否有内容,所以:
-
只要图层里有哪怕一点点像素,它就不会删 -
那些只有图层样式(比如阴影、描边)的空图层,理论上可能被误判为空,不过一般大家很少专门留这种“空样式图层”
建议:第一次用的时候,可以先在文件副本上试一遍,熟悉效果之后再大胆用在正式文件。
2. 图层组会被删吗?
-
脚本会先清理组里面的空图层 -
如果一个组里啥都不剩了,而且没有蒙版之类的特殊东西,就顺带把这个空组也删掉
这样可以避免留下大量的“空文件夹”,看着也不会乱。
3. 这个脚本会很慢吗?
普通的 PSD(几十个图层)基本是秒完成。特别大的、多图层的项目会稍微慢一点,但一般也能接受。脚本里用了历史记录包装,所以整个删除过程算一步历史,你还可以一键撤销。
撤销快捷键:Ctrl+Z(新版本)或 Ctrl+Alt+Z(多步撤销)。
九、最后聊聊“高级感”的本质:不是酷炫,是克制
很多人一听“脚本”“自动化”就觉得是大神才会用的东西,其实脚本本身并不炫技,它做的事非常朴素:重复、枯燥、但必须有人做。
真正的高级感,不是炫一堆复杂功能,而是:
-
知道哪些事情可以交给“机器”做 -
把图层面板打理得干干净净,一眼就能找到关键图层 -
让自己更多时间花在构图、光影、配色这些真正有创造力的环节上
用脚本清空图层里的垃圾,就好像工作台整理干净了,画画才有心情。克制一点,别什么都手动点、一个个删,学会交给工具做,这才是 PS 里的成熟玩家思路。
今天这篇,你可以当成你进入“PS 自动化世界”的一个小小起点:从删除空图层开始,慢慢你会发现,很多重复操作都可以写成脚本、录成动作,让 PS 变成真正的“你的小助手”。
最后留个小练习:
-
找一个图层多一点的旧文件,先手动数数有多少空图层 -
运行脚本,看它帮你删掉了多少“垃圾” -
顺手给脚本加个动作和快捷键,下次就能一键爽了
等你用顺手了,你会发现:“哇,原来高级感不在于会多少滤镜,而在于——我做图的时候越来越省心了。”
这里是甜姐姐,我们下次再一起玩点更好玩的 PS 小技巧~
夜雨聆风