求photoshop图层组合导出脚本

查看 80|回复 9
作者:wuaiwxh   
PS中导出图层,可以组合导出吗?
比如三个组A,B,C,每个组里各有3个图层1,2,3,导出时排列组合导出
如A1+B1+C1合一张,A2+B1+C1合一张,A3+B1+C1合一张,A1+B2+C1合一张,A1+B3+C1合一张...
以此类推
求这种ps脚本

图层, 脚本

Acai1993   

可以!你在ps中要先录制好动作,然后在运行!
如:你新建文件叫ps-001,
        在这里把每个动作(操作)录制一边,
        再新建文件ps-002中运行此动作!
        这个能是笨方法,不知道其他大佬有没有更简单快捷的方法!
动作快捷方式是:Alt+F9
wuaiwxh
OP
  


Acai1993 发表于 2025-8-29 17:45
可以!你在ps中要先录制好动作,然后在运行!
如:你新建文件叫ps-001,

多谢,这个我知道,想找个简单点的
joody   

打开豆包.com
豆包帮我写一个ps插件,让他合并每一个组里显示的图层,然后导出为图片。具体来说:比如三个组A,B,C,每个组里各有3个图层1,2,3,导出时排列组合导出
如A1+B1+C1合一张,A2+B1+C1合一张,A3+B1+C1合一张,A1+B2+C1合一张,A1+B3+C1合一张...
改十几次就会成功的
zbwkl   

https://github.com/antipalindrome/Photoshop-Export-Layers-to-Files-Fast
wuaiwxh
OP
  


joody 发表于 2025-8-29 20:48
打开豆包.com
豆包帮我写一个ps插件,让他合并每一个组里显示的图层,然后导出为图片。具体来说:比如三个 ...

就是改半天都没改出来
wuaiwxh
OP
  


zbwkl 发表于 2025-8-29 21:23
https://github.com/antipalindrome/Photoshop-Export-Layers-to-Files-Fast

这个只能单独出图层,没法组合
joody   


wuaiwxh 发表于 2025-8-29 21:30
就是改半天都没改出来

那你就用ps变量呗,你一共9张原始图,每次只使用三张,就是三个变量,在excel构成27组数组保存为csv,导入ps变量,应用之后会生成27ps文件,再用fast stone view批量转一下。具体过程你自己去搜索学习,变量一开始用的的时候,肯定有会想不到问题,习惯就好。用熟了的话10分钟搞定
zbwkl   

#为我编写一个Photoshop脚本程序,
##主要功能
- 将当前已打开的Photoshop图片文件,按各图层组里的各个图层排列组合,组合后拼合为一个图层,并将图层名称按规则重命名;
- 命名规则为组名加图层名。
- 比如:已打开Photoshop文里面有3个图层组,图层组名分别为A,B,C,每个组里各有3个图层,图层名称分别为1,2,3;
- 排列组合后,新的图片文件当有27个图层(以有3个图层组,各组有3个图层为例);
- 以下为这个图片文件(以有3个图层组,各组有3个图层为例)具体拼合图层排列组合的流程和图层命名方法:
A组里的第一个图层和B组里的第一个图层加C组里的第一个图层拼合为一个图层,并将图层命名为A1B1C1图层;
A组里的第二个图层和B组里的第一个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A2B1C1图层;
A组里的第三个图层和B组里的第一个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A3B1C1图层;
A组里的第一个图层和B组里的第二个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A1B2C1图层;
A组里的第二个图层和B组里的第二个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A2B2C1图层;
A组里的第三个图层和B组里的第二个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A3B2C1图层;
A组里的第一个图层和B组里的第三个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A1B3C1图层;
A组里的第二个图层和B组里的第三个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A2B3C1图层;
A组里的第三个图层和B组里的第三个图层加C组里的第一个图层拼合为一个图层;并将图层命名为A3B3C1图层;
A组里的第一个图层和B组里的第一个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A1B1C2图层;
A组里的第二个图层和B组里的第一个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A2B1C2图层;
A组里的第三个图层和B组里的第一个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A3B1C2图层;
A组里的第一个图层和B组里的第二个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A1B2C2图层;
A组里的第二个图层和B组里的第二个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A2B2C2图层;
A组里的第三个图层和B组里的第二个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A3B2C2图层;
A组里的第一个图层和B组里的第三个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A1B3C2图层;
A组里的第二个图层和B组里的第三个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A2B3C2图层;
A组里的第三个图层和B组里的第三个图层加C组里的第二个图层拼合为一个图层;并将图层命名为A3B3C2图层;
A组里的第一个图层和B组里的第一个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A1B1C3图层;
A组里的第二个图层和B组里的第一个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A2B1C3图层;
A组里的第三个图层和B组里的第一个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A3B1C3图层;
A组里的第一个图层和B组里的第二个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A1B2C3图层;
A组里的第二个图层和B组里的第二个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A2B2C3图层;
A组里的第三个图层和B组里的第二个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A3B2C3图层;
A组里的第一个图层和B组里的第三个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A1B3C3图层;
A组里的第二个图层和B组里的第三个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A2B3C3图层;
A组里的第三个图层和B组里的第三个图层加C组里的第三个图层拼合为一个图层;并将图层命名为A3B3C3图层;
- 生成的代码要能适应Photoshop图片文件有不同的图层组数量,图层组里有不同数量的图层;
##注意事项:
- 生成的代码全部使用中文注释
---------------------------------------------------------------------------------
[JavaScript] 纯文本查看 复制代码/**
* Photoshop 脚本:按图层组的所有组合方式将图层拼合为新的单层
*
* 主要功能:
* 1. 读取当前打开文档中的所有顶层图层组(LayerSet)。
* 2. 对每个图层组取其中的所有普通图层(不包含子图层组)。
* 3. 计算所有图层组之间的笛卡尔积(即所有可能的组合)。
* 4. 对于每一种组合:
*    - 把对应的图层复制到一个临时图层组中;
*    - 合并该临时组得到一张新图层;
*    - 以 “组名+图层名” 的形式为新图层命名。
* 5. 脚本可适配任意数量的图层组以及每组任意数量的图层。
*
* 使用方法:
* 1. 打开 Photoshop 并加载你想处理的 PSD 文件。
* 2. 通过 “文件 > 脚本 > 浏览...” 选择此脚本文件运行。
*
* 注意事项:
* - 该脚本仅处理顶层图层组(不递归子图层组)。如果你想递归子组,请自行扩展。
* - 若某个图层组为空,脚本会自动跳过该组。
* - 生成的所有新图层都位于文档顶部,原始图层保持不变。
*
* @AuThor  AI 助手
* @date    2025-08-31
*/
// ---------------------------------------------
// 主程序入口
// ---------------------------------------------
(function main() {
    // 确保有文档打开
    if (app.documents.length === 0) {
        alert("请先打开一个 Photoshop 文档。");
        return;
    }
    var doc = app.activeDocument;
    // 1. 读取所有顶层图层组
    var topLayerSets = doc.layerSets; // 直接返回一个集合
    var groupsInfo = [];              // 用来存储每个组的名字与其普通图层
    // 2. 逐组提取普通图层
    for (var i = 0; i  0) {
            groupsInfo.push({
                name: group.name,
                layers: normalLayers
            });
        } else {
            // 若组为空,提醒并跳过
            alert("图层组 '" + group.name + "' 为空,已自动跳过。");
        }
    }
    // 若没有可处理的图层组
    if (groupsInfo.length === 0) {
        alert("文档中没有可用的图层组,脚本结束。");
        return;
    }
    // 3. 生成所有组合并合并图层
    try {
        buildCombinations(doc, groupsInfo, 0, [], []);
        alert("完成!共生成 " + combinationCount + " 个组合图层。");
    } catch (e) {
        alert("脚本运行出错:\n" + e);
    }
    // ---------------------------------------------
    // 计数器,用来显示生成的图层数量
    // ---------------------------------------------
    var combinationCount = 0;
    // ---------------------------------------------
    // 递归函数:构建所有组合
    // ---------------------------------------------
    function buildCombinations(doc, groupsInfo, depth, nameParts, layerParts) {
        // 当深度等于组数,说明已选定一个完整组合
        if (depth === groupsInfo.length) {
            // 组合已完成,执行合并
            combineLayers(doc, layerParts, nameParts);
            combinationCount++;
            return;
        }
        // 当前处理第 depth 个图层组
        var currentGroup = groupsInfo[depth];
        var groupName = currentGroup.name;
        var groupLayers = currentGroup.layers;
        // 对该组中的每一个图层进行遍历
        for (var i = 0; i
--------------------------------------------------------------
以上刚刚试过执行成功。
wuaiwxh
OP
  


zbwkl 发表于 2025-8-31 15:38
#为我编写一个Photoshop脚本程序,
##主要功能

这能直接导出到电脑文件夹里吗,十个组半个多小时了也不知道导出进度,以为卡死了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部