我想运行一个Photoshop JavaScript,可以调整大小并保存图像,但我希望在最后将文档恢复到原始状态。在Photoshop中,我只需标记回历史面板,撤消最后的命令即可。那么在脚本中该如何做呢?或者说,最好的方法是将文档恢复到原始状态吗?请注意,不要假设文档最初已保存,它可能是正在进行中的文档。
var savedState = app.activeDocument.activeHistoryState
当你完成你正在做的事情时:
app.activeDocument.activeHistoryState = savedState
app.activeDocument.historyStates
要可靠得多,后者包括灰色(撤消)状态。 - NateS我避免使用历史状态方法 - 我发现这种方法并不总是有效。相反,如果我想做临时更改,我会复制文档并在副本上进行操作,从未失效。
var docCopy = app.activeDocument
只会生成一个引用副本而不是深度复制。 - damirstuhec从ScriptListener插件还原图像:
var idRvrt = charIDToTypeID( "Rvrt" );
executeAction( idRvrt, undefined, DialogModes.NO );
Save the last history command before you start:
This is tricky and may not always work, because the historyStates list includes also history comands you "undo" and are grayed. But let's assume all the last command is not grayed.
history = doc.historyStates.length - 1;
Restore the history state when you finish:
doc.activeHistoryState = doc.historyStates[history];
Delete from history all the commands your script generated:
app.purge (PurgeTarget.HISTORYCACHES);
您可以跳过第三步,这样您在脚本上执行的命令将保留在历史列表中,并变灰(如果您重复运行脚本,则最后一个实际命令不会被恢复,而是上次运行脚本时的最后一个命令)。
为了避免此问题,您也可以在第一步之前清除历史记录中的灰色命令。
this.naturalHeight
/this.naturalWidth
吗(其中this
指的是img
元素)? - David Thomas