Photoshop Scripting:在layerset中迭代所有图层的列表非常慢

时间:2013-10-24 20:12:25

标签: javascript photoshop layer photoshop-script

我正在尝试实施的任务非常简单:

我需要在指定的图层集(组)中获取所有图层(一级)的列表,并将此列表写入文件。

代码很简单(也很有效):

function indexCurrent(document){
    var log = new File(indexLocation+document.name+'.js');
    alert("Collecting data");
    var images = document.layerSets.getByName("Images").layers;
    var imagesLength = images.length;

    var layers = [];

    alert("Iterating " + imagesLength + " layers");

    for(var jj = 0, jL = imagesLength; jj < jL; jj++){
        layers.push('\t\t\'' + images[jj].name + '\'');
    }

    alert("Writing " + layers.length + " layers");

    log.open('w');
    log.write('\n\t\'' + document.name + '\': [\n' );
    log.write(layers.join(",\n"));
    log.write('\n\t]\n');
    log.close();
}

此代码有效,但对于150多个图层,“迭代”和“写入”行之间需要数小时。

我在这里已经阅读了所有相关问题,但这没有用。

我确信应该有更有效的方法来完成这么简单的任务。

我在Windows 7上运行Photoshop CS6。

感谢。

2 个答案:

答案 0 :(得分:0)

我建议你尝试从通过DOM访问图层切换到通过动作管理器获取它们。我很确定你会以这种方式获得更好的表现。我对动作管理器代码很糟糕所以我不能给你一个有用的例子 - 只是谷歌的东西:)

答案 1 :(得分:0)

对我来说运行速度很快,但你没有说明源psd有多大。

Anyhoo,看看这里: Action Manager layer search

我无法运行它,因为我正在运行旧的CS2。叶作答!