我想运行一个调整大小并保存图像的 Photoshop javascript,但最后我想将文档恢复到原始状态。
在 Photoshop 中,我只会标记历史窗格,撤消最后的命令。
我应该如何在脚本中做到这一点?
或者,将文档恢复到原始状态的最佳方法是什么?
不要假设该文档是最初保存的,它可能是正在制作中的文档。
我想运行一个调整大小并保存图像的 Photoshop javascript,但最后我想将文档恢复到原始状态。
在 Photoshop 中,我只会标记历史窗格,撤消最后的命令。
我应该如何在脚本中做到这一点?
或者,将文档恢复到原始状态的最佳方法是什么?
不要假设该文档是最初保存的,它可能是正在制作中的文档。
保存活动历史状态:
var savedState = app.activeDocument.activeHistoryState
然后当你完成你正在做的事情时:
app.activeDocument.activeHistoryState = savedState
从 ScriptListener 插件恢复图像:
var idRvrt = charIDToTypeID( "Rvrt" );
executeAction( idRvrt, undefined, DialogModes.NO );
我避免使用历史状态方法——我发现它并不总是很好用。相反,如果我想做临时更改,我会复制文档并进行处理。从未失败。
答案是:
在开始之前保存最后一个历史命令:
这很棘手并且可能并不总是有效,因为 historyStates 列表还包括您“撤消”的历史命令并且是灰色的。但是让我们假设所有最后一个命令都没有变灰。
history = doc.historyStates.length - 1;
完成后恢复历史状态:
doc.activeHistoryState = doc.historyStates[history];
从历史记录中删除脚本生成的所有命令:
app.purge (PurgeTarget.HISTORYCACHES);
您可以跳过#3,在这种情况下,您在脚本上执行的命令将保留在历史列表中,呈灰色(如果您重复该脚本,您最终不会恢复最后一个实际命令,而是恢复上一个脚本的最后一个命令跑)。
或者,为避免此问题,您还可以在步骤 #1 之前清除历史灰色命令。