2011-04-26 150 views
15

我想Photoshop来自动执行以下任务对于给定的文件夹:在给定文件夹从Photoshop动作Photoshop的脚本?

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

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

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

这需要我以下问题:有没有办法自动生成运行给定动作的Photoshop Javascript代码

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

回答

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

它可以在许多方面得到改善,但我希望它能帮助。

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

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

16

让我回答你实际上用粗体提问的问题: 有一种工具可以自动为Photoshop中发生的动作和事件生成Javascript。这就是所谓的脚本监听。使用脚本监听器记录您的操作后,查看日志并进行选择性编辑。

要开始使用脚本监听

  1. 关闭的Photoshop
  2. 复制ScriptListener。8li文件 从C:\ Program Files文件\的Adobe \ Adob​​e公司的Photoshop CS5 \脚本\公用事业文件夹
  3. 粘贴文件到C:\ PROGRAM 文件\的Adobe \ Adob​​e公司的Photoshop CS5 \插件-ins \自动化文件夹。
  4. 运行Photoshop,执行想要在脚本中发生的操作。
  5. 关闭Photoshop,从Automate文件夹中删除脚本侦听器的副本。
  6. 编辑由脚本侦听器放置在桌面上的日志文件。

让您的新一届脚本到Photoshop的地方,你已经与JSX扩展创建成文件C:\ Program Files文件\的Adobe \ Adob​​e公司的Photoshop CS5 \预置\脚本

Lynda.com在使用脚本和脚本侦听器方面拥有丰富的经验。这是一个基于会员的网站,但不是免费的($ 25- $ 35个月)。

+0

能否请您发布正在使用此程序生成的日志文件的样本? – skibulk 2014-10-21 12:44:05

+1

有一天我会给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); – 2014-10-22 01:21:08

5

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

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

一个例子来看看这个:

enter image description here

对于一些额外的提示look here

2

要更新凯文的回答,ScriptListener现藏在不同的地方:

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

“Scripting Listener Plug-in”中。 Windows中的插件目录也发生了变化,通常为:

C:\ Program Files文件\ Common Files文件\的Adobe \插件\ CC