【问题标题】:How to get Layer Objects by IDs如何通过 ID 获取图层对象
【发布时间】:2012-08-28 01:24:25
【问题描述】:

Photoshop 脚本 API 让我很苦恼。它根本对开发人员不友好。 但我仍然相信,当我有图层 id 时,有办法获取图层对象吗?

我要做的就是将选定的图层复制到一个新文档中。图层可能嵌套在组中。

【问题讨论】:

  • 我尝试按名称获取,但没有找到任何东西。我也尝试过使用动作参考,但找不到好的参考(而且它似乎使简单的事情过于复杂)。
  • 好的。我找到了将所选图层复制到所有打开的文档(cameronmcefee.com/photoshop-script-duplicate-to-all)的脚本。我可以修改它以满足我的需要。仍然是唯一的方法吗?如此简单的动作相当复杂。

标签: javascript photoshop photoshop-script jsx


【解决方案1】:

你说得对,这么简单的动作不应该这么复杂。 试试这个:

var curDoc  = app.activeDocument;
var newDoc = app.documents.add(curDoc.width,curDoc.height,curDoc.resolution);//add a new doc with the same dimensions as the active one
app.activeDocument = curDoc;//set the original doc as active
try {
    var curLayer = newDoc.activeLayer;//get a reference to the new document's current layer
    curDoc.activeLayer.duplicate(newDoc,ElementPlacement.PLACEATBEGINNING);//dupliate the active layer from the original doc to the new/copy doc
} catch(e) {    alert(e);   }

如果有帮助,Photshop 会附带一个参考(应该在 PHOTOSHOP_INSTALL_FOLDER/Scripting/Documents)和/或对象模型查看器(在 ExtendScriptToolkit 的帮助菜单下可见)。

【讨论】:

  • 这对我有用 :) doc 的问题是其中许多功能在我的情况下不起作用。我正在尝试几种方法并收到“此功能可能在此版本的程序中不可用”。
  • 您使用的是哪个版本的 Photoshop?我已经用 CS5.1 进行了测试,也许 API 稍微适合您的版本。如果是这种情况,请隔离引发错误的函数(可能是 duplicate())并检查文档中您的 Photoshop 版本的签名
  • 我正在使用 CS6 试用版(试用版很重要?)。
  • 我认为试用并不重要。我有点困惑,上面的整个代码有效吗? “此版本的程序中可能没有此功能”来自哪里?您所说的 doc 是指引用 Photoshop 文档或文档的变量吗?
  • 上面的代码完美运行。 “doc”代表“文档”。但是例如函数 Document.saveAs 会抛出这样的异常。而不仅仅是这个功能。
猜你喜欢
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多