javascript - 使用 Adob​​e 扩展将图像目录打开到单独的图层中

标签 javascript adobe extendscript

我正在开发一个 Adob​​e 扩展,我想从扩展中将图像目录加载到文档中的单独图层中。我对这是如何完成的完全不偏不倚——所以如果有更好的方法,请与我分享。我当前的工作 方法涉及使用open() 方法,该方法在新文档中打开一个文件,然后将新文档的图层复制到原始文档中。下面是一个示例。

// open new document
var originalDoc = app.activeDocument;
var doc = open( new File( filePath ) );

// duplicate to original document
var layer = doc.activeLayer;
var newLayer = layer.duplicate(originalDoc, ElementPlacement.PLACEATBEGINNING);

// close new document
doc.close(SaveOptions.DONOTSAVECHANGES);

这种方法非常慢,尤其是对于大图像。在做了一些谷歌搜索后,我发现 Photoshop 有一个 built-in method for creating an image stack .此功能本身使用 .jsx 脚本,它可以是 found on GitHub .在网上环顾四周,我发现有几个人在尝试 load a folders contents as layers , 完美的。我感兴趣的主要代码如下。

var folder = new Folder('~/Desktop/MyFolder');
function runLoadStack(folderPath) {
    var loadLayersFromScript = true;
    // @include 'Load Files into Stack.jsx'
    var fList = folder.getFiles('*.png')
    var aFlag = true;
    loadLayers.intoStack(fList, aFlag);
}
runLoadStack(folder)

我立即注意到导入堆栈方法的 @include 方法,我找不到任何关于此的官方文档(也对缩小不友好)。此外,如果脚本未放置在与 Load Files into Stack.jsx 相同的目录中,它将抛出错误 Unable to open file: anonymous。即使在解决了所有这些问题之后,当我使用 $.evalFile() 从我的扩展中运行 .jsx 脚本时,我仍然遇到相同的错误,就好像脚本不在正确的目录中一样:无法打开文件:匿名Error is being thrown on line 762 of an imported jsx .

任何帮助解决我遇到的错误或只是关于如何将图像路径数组加载到层中(更快的方法)的任何帮助都将不胜感激!

这是我在我的扩展中使用的代码:

var loadLayersFromScript = true;
var strPresets = localize("$$$/ApplicationPresetsFolder/Presets=Presets");
var strScripts = localize("$$$/PSBI/Automate/ImageProcessor/Photoshop/Scripts=Scripts");

var jsxFilePath = app.path + "/" + strPresets + "/" + strScripts + "/Load Files into Stack.jsx";

$.evalFile( new File( jsxFilePath ) );
loadLayers.intoStack( new Folder("/c/Users/Me/teststack").getFiles(), true );

最佳答案

Photoshop 的内置脚本有一个脚本可以执行此操作,这是 github 链接

https://github.com/ES-Collection/Photoshop-Scripts/blob/master/Import%20Folder%20As%20Layers.jsx

在您的 CEP 扩展中使用此脚本

关于javascript - 使用 Adob​​e 扩展将图像目录打开到单独的图层中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58332689/

相关文章:

javascript - 给超时函数一个 Id,但是如何触发它呢?

c# - 为什么 Adob​​e PDF 控件在外部调试时打不开? (错误 103)

javascript - InDesign 扩展脚本 : How do I transform the entire selection?

javascript - Extendscript Javascript 计算结果错误

javascript - 无法显示对象内容 - AngularJS

javascript - 如何在jquery ui进度条中使用变量

javascript - 如何仅针对用户选择的项目从数据库中获取列值到弹出表单上?

c# - Adobe PDF 表单已提交,但 Request.Form 集合为空

fonts - Adobes CFF格式的 "Private DICT Data"有什么用

extendscript - After Effects/ExtendScript : Using libraries and importing . jsx 文件?