Photoshop javascript脚本编写后如何恢复原始文档状态
我想运行一个photoshop javascript来调整大小并保存图像,但最后我想将文档恢复到原始状态 在photoshop中,我只需标记历史窗格,撤消最后的命令。Photoshop javascript脚本编写后如何恢复原始文档状态,javascript,photoshop,Javascript,Photoshop,我想运行一个photoshop javascript来调整大小并保存图像,但最后我想将文档恢复到原始状态 在photoshop中,我只需标记历史窗格,撤消最后的命令。 我应该如何在脚本中完成它? 或者,将文档恢复到原始状态的最佳方法是什么 不要假设该文档最初保存,它可能是正在工作的文档。答案是: 启动前保存最后一个历史记录命令: 这是一个棘手的问题,可能并不总是有效的,因为historyStates列表还包括您“撤消”的历史命令,并且是灰色的。但是让我们假设最后一个命令不是灰色的 history
我应该如何在脚本中完成它?
或者,将文档恢复到原始状态的最佳方法是什么 不要假设该文档最初保存,它可能是正在工作的文档。答案是:
这是一个棘手的问题,可能并不总是有效的,因为historyStates列表还包括您“撤消”的历史命令,并且是灰色的。但是让我们假设最后一个命令不是灰色的
history = doc.historyStates.length - 1;
doc.activeHistoryState = doc.historyStates[history];
app.purge (PurgeTarget.HISTORYCACHES);
或者,为了避免此问题,您也可以在步骤1之前清除历史灰显命令。从ScriptListener插件还原图像:
var idRvrt = charIDToTypeID( "Rvrt" );
executeAction( idRvrt, undefined, DialogModes.NO );
我避免使用历史状态方法——我发现它并不总是很有效。相反,如果我想做临时更改,我会复制文档并处理它。永不失败。保存活动历史记录状态:
var savedState = app.activeDocument.activeHistoryState
然后,当你完成你正在做的事情时:
app.activeDocument.activeHistoryState = savedState
我从未编写过Photoshop脚本,但是你能通过API轻松复制文档吗?也许对副本进行更改并在保存后关闭是最好的方式。我不知道PS JS有多完整,但您是否有
此。naturalHeight
/此。naturalWidth
(其中此
指img
元素)?这将使文档恢复到上次保存的状态。。这在某些情况下是不安全的。ilomambo下面的回答是正确的,因为它只会撤销您指定的命令数量。这正是我想要的。谢谢。@anna forest你会怎么做?我猜var docCopy=app.activeDocument
只会创建一个参考副本,而不是深度副本。var docCopy=app.activeDocument.duplicate()@anna forest谢谢,那么您如何正确地丢弃重复的文档呢?谢谢。我已经很多年没有主动编写任何photoshop脚本了,但我相信我只是在关闭文档而没有保存它。这比处理app.activeDocument.historyState
(包括灰色(未完成)状态)要可靠得多。