从Photoshop动作到Photoshop脚本?

Ame*_*ina 15 javascript photoshop photoshop-script

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

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

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

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

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

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

Kev*_*rst 19

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

开始使用脚本侦听器

  1. 关闭Photoshop
  2. 复制ScriptListener.8li文件从 C:\ Program Files文件\的Adobe\Adobe公司的Photoshop CS5 \脚本\实用程序文件夹
  3. 将文件粘贴C:\ Program Files\Adob​​e\Adob​​e Photoshop CS5\Plug-ins\Automate文件夹.
  4. 运行Photoshop,执行您希望在脚本中执行的操作.
  5. 关闭Photoshop,从Automate文件夹中删除脚本侦听器的副本.
  6. 编辑脚本侦听器放置在桌面上的日志文件.

要将新的脚本放入Photoshop,请将使用jsx扩展创建的文件放入C:\ Program Files\Adob​​e\Adob​​e Photoshop CS5\Presets\Scripts.

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

  • 总有一天我会为CS6提供更新的流程.您不再需要删除脚本.现在有一个ScriptListenerOn和一个ScriptListenerOff脚本.就样本日志而言,它将非常冗长.以下是用于打开和关闭jpeg的脚本.<br/> 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认同)

jan*_*ani 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];
}
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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

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

请看这个例子:

在此输入图像描述

有关其他一些提示请查看此处