从Photoshop动作到Photoshop脚本?

时间:2011-04-26 21:37:18

标签: javascript photoshop photoshop-script

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

  1. 将所有PNG文件加载到给定文件夹中。
  2. 将每个文件的模式转换为RGB color
  3. 为每个文件添加一个图层
  4. 将文件另存为PSD保存在同一文件夹中
  5. 我被告知这可以通过Photoshop脚本完成,但我不知道如何开始,因为不幸的是我没有太多的JavaScript经验。

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

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

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

5 个答案:

答案 0 :(得分:18)

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

开始使用脚本侦听器

  1. 关闭Photoshop
  2. 复制 ScriptListener.8li 文件 来自 C:\ Program Files \ Adob​​e \ Adob​​e Photoshop CS5 \ Scripting \ Utilities 文件夹
  3. 将文件粘贴 C:\ Program Files \ Adob​​e \ Adob​​e Photoshop CS5 \ Plug-ins \ Automate 文件夹。
  4. 运行Photoshop,执行您希望在脚本中执行的操作。
  5. 关闭Photoshop,从Automate文件夹中删除脚本侦听器的副本。
  6. 编辑脚本侦听器放置在桌面上的日志文件。
  7. 要将新的fangled脚本放入Photoshop,请将使用jsx扩展名创建的文件放入 C:\ Program Files \ Adob​​e \ Adob​​e Photoshop CS5 \ Presets \ Scripts

    Lynda.com有一个关于使用脚本和脚本监听器的好课程。它是一个会员制网站,但不是免费的(25美元至35个月)。

答案 1 :(得分: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];
}

它可以在很多方面得到改善,但我希望它有所帮助。

答案 2 :(得分:6)

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

剩下的唯一技巧是让动作在特定文件夹中运行,而不是在记录动作的位置。然而,这很容易。使用“覆盖打开”和“覆盖保存”选项。您可以使用File - >调用此操作。自动化 - >批处理或使用工具从Adobe Bridge - > Photoshop - >操作

请参阅此示例:

enter image description here

有关其他提示look here

答案 3 :(得分: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

他们会让你做你想做的事,没有任何编程知识。

答案 4 :(得分:2)

为了更新Kevin的答案,ScriptListener现在隐藏在另一个地方:

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

inside" Scripting Listener Plug-in"。 Windows中的插件目录也发生了变化,通常是:

C:\ Program Files \ Common Files \ Adob​​e \ Plug-Ins \ CC