You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何程序化生成Photoshop文件的所有图层可见性组合?

批量导出PSD所有图层可见性组合的PNG脚本实现

完全可以实现,用Photoshop自带的JSX脚本就能搞定,正好能用你说的二进制位映射思路高效生成所有图层可见性组合,自动导出PNG文件。

核心思路

对于n个图层,总共有2^n种组合。我们可以用从0到2^n - 1的整数,将每个整数转换为二进制字符串,每一位对应一个图层的显隐状态:1代表图层可见,0代表图层隐藏。比如4层时,0001表示仅Layer 0可见,1010表示Layer 1和Layer 3可见。

具体JSX脚本代码

// 配置导出路径(请修改为你自己的文件夹路径,Windows用双反斜杠,Mac用正斜杠)
var exportPath = "D:/PSD_Exports/";

// 获取当前活动文档
var doc = app.activeDocument;
// 获取所有图层(Photoshop中图层默认从上到下排列,这里按你的示例Layer 0到Layer 3对应数组第0到第3位)
var layers = doc.layers;
var totalLayers = layers.length;
var totalCombinations = Math.pow(2, totalLayers);

// 创建导出文件夹(如果不存在)
var folder = new Folder(exportPath);
if (!folder.exists) {
    folder.create();
}

// 循环处理所有组合
for (var i = 0; i < totalCombinations; i++) {
    // 将当前数字转换为二进制字符串,补前导零到图层位数
    var binaryStr = i.toString(2).padStart(totalLayers, '0');
    
    // 遍历每个图层,设置可见性
    for (var j = 0; j < totalLayers; j++) {
        // 若图层上下顺序和二进制位顺序相反,可将j改为totalLayers-1-j
        layers[j].visible = (binaryStr[j] === '1');
    }
    
    // 设置导出文件名,包含二进制状态和数字编号
    var fileName = "Combination_" + binaryStr + "_" + i + ".png";
    var saveFile = new File(exportPath + fileName);
    
    // 导出为PNG
    var pngOptions = new PNGSaveOptions();
    pngOptions.compression = 9; // 压缩级别0-9,9为最高
    pngOptions.interlaced = false;
    
    doc.exportDocument(saveFile, ExportType.PNG, pngOptions);
}

alert("所有组合导出完成!共导出" + totalCombinations + "张图片");

使用说明

  1. 打开目标PSD文件,确认图层顺序符合你的预期
  2. 打开Photoshop的「脚本编辑器」:顶部菜单选择「文件」>「脚本」>「脚本编辑器」
  3. 将上述代码粘贴到编辑器中,修改exportPath为你本地的文件夹路径
  4. 点击编辑器顶部的运行按钮(▶️),等待脚本执行完成

如果你的图层从上到下是Layer 3到Layer 0的顺序,需要修改代码中设置图层可见性的部分,把layers[j].visible改成layers[totalLayers-1-j].visible,让二进制位顺序和图层上下顺序对应。

内容的提问来源于stack exchange,提问作者DavidNyan10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:45:14