【问题标题】:From Photoshop actions to Photoshop scripting?从 Photoshop 动作到 Photoshop 脚本?
【发布时间】:2011-08-13 09:31:44
【问题描述】:

我希望 Photoshop 自动为给定文件夹执行以下任务:

  1. 在给定文件夹中加载所有 PNG 文件。
  2. 将每个文件的模式转换为RGB color
  3. 为每个文件添加一层
  4. 将文件以 PSD 格式保存在同一文件夹中

有人告诉我,这可以通过 Photoshop 脚本来完成,但我不知道如何开始,因为很遗憾我对 JavaScript 没有太多经验。

我知道的一件事是我无法使用 Actions 运行上述任务,因为当我记录最后一步 (4) 时,Photoshop 记录了将 PSD 文件保存在我在记录时使用的文件夹中的操作宏(而不是用于加载原始 PNG 文件的宏)。换句话说,它将目标文件夹固定为宏中使用的文件夹。

这让我想到了以下问题:有没有办法自动生成运行给定动作的 Photoshop Javascript 代码?

如果是这样,我不介意学习如何修改脚本来解决上述文件夹问题。

【问题讨论】:

    标签: javascript photoshop photoshop-script


    【解决方案1】:

    让我用粗体字回答你实际提出的问题: 有一个工具可以为 Photoshop 中发生的动作和事件自动生成 Javascript。它被称为 Script Listener。使用脚本侦听器记录您的操作后,查看日志并进行选择性编辑。

    开始使用脚本监听器

    1. 关闭 Photoshop
    2. 复制 ScriptListener.8li 文件 从 C:\Program Files\Adobe\Adobe Photoshop CS5\Scripting\Utilities 文件夹
    3. 粘贴文件到 C:\Program Files\Adobe\Adobe Photoshop CS5\Plug-ins\Automate 文件夹。
    4. 运行 Photoshop,执行您希望在脚本中发生的操作。
    5. 关闭 Photoshop,从 Automate 文件夹中删除脚本侦听器的副本。
    6. 编辑脚本侦听器放置在桌面上的日志文件。

    要将您的新奇特脚本放入 Photoshop,请将您创建的带有 jsx 扩展名的文件放入 C:\Program Files\Adobe\Adobe Photoshop CS5\Presets\Scripts。

    【讨论】:

    • 您能否发布使用此过程生成的日志文件的示例?
    • 有一天我会给出一个更新的 CS6 流程。您不再需要删除脚本。现在有一个 ScriptListenerOn 和一个 ScriptListenerOff 脚本。就示例日志而言,它将非常冗长。以下是用于打开和关闭 jpeg 的脚本。
      var idOpn = charIDToTypeID("Opn"); var desc1 = new ActionDescriptor(); var idnull = charIDToTypeID("null"); desc1.putPath(idnull, new File("C:\Users\Kevin\Pictures\11732.jpg")); executeAction(idOpn, desc1, DialogModes.NO);
    【解决方案2】:

    我制作了一个完成所需工作的脚本:

    #target photoshop
    #strict on
    
    runthis();
    function runthis()
    {
        var path = "/d/PhotoshopScript/Images/";
    
         var inputFolder = new Folder(path );
        var inputFiles = inputFolder.getFiles("*.png");
    
        for(index in inputFiles)
        {
            // open the file
            var fileToOpen = new File(inputFiles[index]);
            open(fileToOpen);
    
            // Change mode to rgb
            activeDocument.changeMode(ChangeMode.RGB);
            // add a new layer
            activeDocument.artLayers.add();
    
            //save
            var psdOptions = new PhotoshopSaveOptions();
            psdOptions.alphaChannels = true;
            psdOptions.annotations = false;
            psdOptions.embedColorProfile = false;
            psdOptions.layers = true;
            psdOptions.spotColors = false;
    
            var file = new File(path + GetFileName(String(inputFiles[index])));
            activeDocument.saveAs(file, psdOptions);
    
            activeDocument.close();
    
            // dispose
            fileToOpen = null;
            psdOptions = null;
            file  = null;
        }
        // dispose
        inputFolder = null;
        inputFiles = null;
    
    }
    
    function GetFileName(fullPath)
    {
        var m = fullPath.match(/(.*)[\/\\]([^\/\\]+)\.\w+$/);
        return m[2];
    }
    

    它可以在很多方面进行改进,但我希望它有所帮助。

    【讨论】:

      【解决方案3】:

      我意识到这是一个老问题,但原始帖子要求的内容可以完全在 Photoshop Action 中完成。 Photoshop 动作很容易记录 - 您只需点击记录并手动执行这些步骤。 - 包括打开、操作和保存步骤。

      剩下的唯一技巧是让动作在特定文件夹中运行,而不是在您记录动作的地方。然而,这很容易。使用“覆盖打开”和“覆盖保存”选项。您可以使用 File -> Automate -> Batch 或从 Adob​​e Bridge 使用 Tools -> Photoshop -> Action

      调用此操作

      看这个例子:

      其他提示look here

      【讨论】:

        【解决方案4】:

        在您的计算机上查找文件 SaveAsDifferentFileType.jsx,我认为您可以以此为起点。

        现在我知道有一种方法可以自动生成此代码。 我认为没有办法了解它是如何工作的:

        这里是文档:http://www.adobe.com/devnet/photoshop/scripting.html 这里有一个教程会告诉你从哪里开始: http://morris-photographics.com/photoshop/tutorials/scripting1.html

        如果您使用的是 MAC,您可以尝试 Automator Photoshop 操作: http://www.completedigitalphotography.com/?p=339

        他们会让你做你想做的事,而不需要任何编程知识。

        【讨论】:

          【解决方案5】:

          为了更新 Kevin 的回答,ScriptListener 现在隐藏在不同的地方:

          http://www.adobe.com/devnet/photoshop/scripting.html

          在“脚本侦听器插件”中。 Windows 中的插件目录也发生了变化,通常是:

          C:\Program Files\Common Files\Adobe\Plug-Ins\CC

          【讨论】:

            猜你喜欢
            • 2020-07-24
            • 2011-08-05
            • 1970-01-01
            • 2014-10-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-22
            • 1970-01-01
            相关资源
            最近更新 更多