【问题标题】:AE Extendscript layered source fileAE Extendscript分层源文件
【发布时间】:2019-05-05 22:52:12
【问题描述】:

我正在编写一个脚本,它可以查找/替换您项目中缺失的项目。不幸的是,我遇到了检测然后替换分层图像源(psd、ai 等)的情况。

1) 除了解析 item.name 之外,我看不到任何检测 AvItem 是否是分层图像中的层的方法,这是不可靠的,因为用户始终可以在项目面板中重命名项目。

2) 一旦我知道它是分层图像的一部分,我就无法弄清楚如何在不将图层替换为合并图像的情况下将其重新链接到正确的图像。 item.replace(new_path) 将用整个图像替换该项目,而不是图像中的图层。例如:

var item = app.project.item(3); //assuming this is the 'layer' we want to replace
item.replace(new_path);

那么,某处是否有一个秘密属性可以可靠地告诉我一个项目是否是分层图像的一部分,如果是,有没有办法重新链接它而不用整个合并图像替换图层?

编辑

这是一个猜测图层是否是分层图像的一部分的函数。它不是防弹的,但只要用户不重命名该项目,它就应该可以工作:

function isSourceLayered (av_item) {
    // check if there is a "/"
    if (av_item.name.indexOf("/") != -1) {
        // check if it is in a "layers" folder
        if (av_item.parentFolder.name.indexOf("Layers") != -1) {
            return true;
        }
    }

    return false;
}

【问题讨论】:

  • 您也可以检查图层源,看看是否可以将其作为合成导入。它不会告诉您它是否 作为图层从合成中导入,但就像名称中的斜线一样,它是一个线索。 var io = new ImportOptions(File("c:\\myFile.psd")); if io.canImportAs(ImportAsType.COMP) { <probably a comp> }

标签: adobe extendscript after-effects


【解决方案1】:

我刚刚在 Adob​​e 扩展脚本论坛上询问了 same question。除非有未记录的功能(并且我花了一些时间查看 Extendscript Toolkit 的数据浏览器),否则 fileSource 对象似乎没有任何属性或方法来执行此操作。

有一种解决方法,您可以使用ImportOptions.importAs(ImportAsType.COMP) 导入文件这将导入一个comp,您可以遍历与名称匹配的层,获取该层的源并将其用作新源.但是正如你所说,如果源被重命名,它就不起作用了。

我已经把它写成了一个函数,它可以在github 编辑:我忘了我改变了这个函数的工作方式。由于这个问题,它不会重新导入图层源,它只是使用 Duplicate 菜单命令。

【讨论】:

  • 感谢 stib,所以我想我的恐惧得到了证实!不久前,我在 User Voice 论坛上提交了一个功能请求,要求将更多数据暴露给扩展脚本(也希望序列的帧范围)。我检查了你的功能,我想我可以实现类似的东西,但它确实变得混乱......无论如何感谢您的信息!
  • 我在上面添加了一个函数来尝试检测项目是否分层。
猜你喜欢
  • 2013-06-27
  • 2015-04-29
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
相关资源
最近更新 更多