19

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

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

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

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

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

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

4

5 回答 5

24

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

开始使用脚本监听器

  1. 关闭 Photoshop
  2. C:\Program Files\Adobe\Adobe Photoshop CS5\Scripting\Utilities文件夹中复制ScriptListener.8li文件
  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中。

于 2012-06-28T22:26:40.337 回答
13

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

#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];
}

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

于 2011-05-27T15:40:11.760 回答
7

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

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

请参阅此示例:

在此处输入图像描述

有关其他提示,请查看此处

于 2013-08-28T00:58:31.267 回答
3

在您的计算机上查找文件 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

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

于 2011-04-27T13:08:40.267 回答
2

为了更新凯文的答案,ScriptListener 现在隐藏在不同的地方:

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

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

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

于 2018-01-03T06:17:16.943 回答