Javascript PS js脚本循环槽层,使一个接一个可见,并保存之间的每一次

Javascript PS js脚本循环槽层,使一个接一个可见,并保存之间的每一次,javascript,photoshop-script,Javascript,Photoshop Script,希望标题听起来不会让人困惑。 我想用脚本做的是: 在工作文件中打开智能对象层 获取第一层名称,使第一层可见,更新智能对象 从主文档的组(颜色)中获取名称和活动层 2.Name+3.Name并另存为.png 请参见附件中的图表以及此处的简短屏幕广播: 谢谢你的帮助 #目标photoshop //这将当前活动文档存储到变量mockupDoc var mockupDoc=app.activeDocument; //这将存储Front.psd文件的名称,以便Photoshop可以在正确的文档中查找活

希望标题听起来不会让人困惑。 我想用脚本做的是:

  • 在工作文件中打开智能对象层
  • 获取第一层名称,使第一层可见,更新智能对象
  • 从主文档的组(颜色)中获取名称和活动层
  • 2.Name+3.Name并另存为.png
  • 请参见附件中的图表以及此处的简短屏幕广播:

    谢谢你的帮助

    #目标photoshop
    //这将当前活动文档存储到变量mockupDoc
    var mockupDoc=app.activeDocument;
    //这将存储Front.psd文件的名称,以便Photoshop可以在正确的文档中查找活动层。
    var designDoc=app.documents.getByName(“Front.psd”);
    //获取Front.psd的活动层的名称
    var designlayer=designDoc.activeLayer;
    //获取名称和位置;
    var docName=mockupDoc.name;
    如果(docName.indexOf(“.”!=-1){var basename=docName.match(/(.*)\..[^\.]+$/)[1]}
    else{var basename=docName};
    //获取位置,如果未保存,则保存到桌面;
    请尝试{var docPath=mockupDoc.path}
    catch(e){var docPath=“~/Desktop”};
    //jpg选项,但希望通过我的小png/jpg PS插件而不是PS native来保存
    var jpegOptions=新的JPEGSaveOptions();
    jpegOptions.quality=9;
    jpegOptions.embedColorProfile=true;
    jpegOptions.matte=MatteType.NONE;
    //在Front.psd中保存包含活动层名称的实体模型文件
    
    mockupDoc.saveAs((新文件(docPath+'/'+basename+''+designDoc.activeLayer.name+'.jpg')),jpegOptions,true)欢迎使用堆栈溢出。通常情况下,我们会要求查看您编写了哪些代码——即使它不起作用,也只需输入注释来解释您正在尝试执行的操作。在提问时,破译的代码总比没有好。但也要记住,SO不是脚本编写服务

    在层上循环是直接的-暂时避免分组-这更高级。环顾四周,您应该会找到保存PNG的代码

    这会让你开始

     // Call the open document the source document
     // It's easier than having to type app.activeDocument each time :)
    var srcDoc = app.activeDocument;
    
    // create a variable that holds the number of layers in the psd
    var numOfLayers = srcDoc.layers.length;
    
    // temp string to hold all layer names
    var str = ""
    
    // loop over each layer - from the background to the top
    for (var i = numOfLayers -1; i >= 0  ; i--)
    // for the top to the bottom use: for (var i = 0; i < numOfLayers; i++)
    {
        // get the name of each layer
        var layerName = srcDoc.layers[i].name;
    
        // add the layer name to a string
        str += layerName + "\n";
    
        // set the visiblity of each layer to true (on)
        srcDoc.layers[i].visible = true;
    }
    
    // display the layer names
    alert(str);
    
    
    
    function save_as_png(myFilePath)
    {
        var f = myFilePath + ".png";
    
        // save out the image
        var pngFile = new File(f);
        pngSaveOptions = new PNGSaveOptions();
        pngSaveOptions.embedColorProfile = true;
        pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
        pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;
    
        activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
    }
    
    //将打开的文档称为源文档
    //这比每次都必须键入app.activeDocument更容易:)
    var srcDoc=app.activeDocument;
    //创建一个变量,用于保存psd中的层数
    var numOfLayers=srcDoc.layers.length;
    //保存所有图层名称的临时字符串
    var str=“”
    //在每一层上循环-从背景到顶部
    对于(var i=numOfLayers-1;i>=0;i--)
    //从上到下使用:for(var i=0;i
    谢谢@Mr神秘客

    我同时解决了大部分任务,并在下面添加了代码。也许其他一些用户会发现它的某些部分很有用,或者有更好的解决方案

    /================================================================================================================================================================================================================================================================================================================================================
    //jpg选项。
    var jpegOptions=新的JPEGSaveOptions();
    jpegOptions.quality=9;
    jpegOptions.embedColorProfile=true;
    jpegOptions.matte=MatteType.NONE;
    //PNG选项。
    pngOptions=新的PNGSaveOptions()
    pngOptions.compression=0
    pngOptions.interlaced=假
    //=========================================================================================================================================================================================================
    //“粘贴到位”函数的变量
    cTID=函数{return app.charIDToTypeID;};
    sTID=函数{返回app.stringIDToTypeID;};
    //检查哪个是Mockup.psd文件(因为我的名字不同,但总是包含“Mockup”)
    var docs=app.documents;
    对于(var i=docs.length-1;i>=0;i--){
    if(docs[i].name.indexOf('Mockup')>0){
    var mockupDoc=docs[i];
    }
    }
    //获取Mockup.psd的名称和位置,并从名称/字符串中删除“Mockup”。
    var mockupDocName=mockupDoc.name.replace(/Mockup/i',);
    if(mockupDocName.indexOf(“.”!=-1){var basename=mockupDocName.match(/(.*)\.[^\.]+$/)[1]}
    else{var basename=mockupDocName};
    //获取Mockup.psd的位置;
    var mockupDocPath=mockupDoc.path
    //layerset“GTO后台”的设置变量
    var gtoBG=mockupDoc.layerSets.getByName(“GTO背景”);
    //这将存储Front.psd文件的名称,以便Photoshop可以在正确的文档中查找活动层。
    var designDoc=app.documents.getByName(“Designs Front.psd”);
    var currentLayer=designDoc.activeLayer;
    //创建一个变量,用于保存psd中的层数
    var numOfLayers=designDoc.layers.length;
    //保存所有图层名称的临时字符串
    //var str=“”
    //获取每个层的名称
    //var layerName=designDoc.layers[i].name;
    //将图层名称添加到字符串中
    //str+=layerName+“\n”;
    函数resetDesignDoc(){
    //将“FRONT.psd”又名designDoc设置为活动文档。
    app.activeDocument=designDoc;
    //在每一层上循环-从背景到顶部
    对于(var i=numOfLayers-1;i>=0;i--)
    //从上到下使用:for(var i=0;i