3

我想运行一个调整大小并保存图像的 Photoshop javascript,但最后我想将文档恢复到原始状态。

在 Photoshop 中,我只会标记历史窗格,撤消最后的命令。
我应该如何在脚本中做到这一点?
或者,将文档恢复到原始状态的最佳方法是什么?

不要假设该文档是最初保存的,它可能是正在制作中的文档。

4

4 回答 4

8

保存活动历史状态:

var savedState = app.activeDocument.activeHistoryState

然后当你完成你正在做的事情时:

app.activeDocument.activeHistoryState = savedState
于 2015-09-30T20:23:00.340 回答
5

从 ScriptListener 插件恢复图像:

var idRvrt = charIDToTypeID( "Rvrt" );
executeAction( idRvrt, undefined, DialogModes.NO );
于 2013-11-13T06:38:50.360 回答
5

我避免使用历史状态方法——我发现它并不总是很好用。相反,如果我想做临时更改,我会复制文档并进行处理。从未失败。

于 2013-11-14T15:53:37.023 回答
4

答案是:

  1. 在开始之前保存最后一个历史命令:
    这很棘手并且可能并不总是有效,因为 historyStates 列表还包括您“撤消”的历史命令并且是灰色的。但是让我们假设所有最后一个命令都没有变灰。

    history = doc.historyStates.length - 1;
    
  2. 完成后恢复历史状态:

    doc.activeHistoryState = doc.historyStates[history];
    
  3. 从历史记录中删除脚本生成的所有命令:

    app.purge (PurgeTarget.HISTORYCACHES);
    

您可以跳过#3,在这种情况下,您在脚本上执行的命令将保留在历史列表中,呈灰色(如果您重复该脚本,您最终不会恢复最后一个实际命令,而是恢复上一个脚本的最后一个命令跑)。
或者,为避免此问题,您还可以在步骤 #1 之前清除历史灰色命令。

于 2013-03-10T14:32:39.807 回答