2

我要实现的任务非常简单:

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

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

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。

谢谢。

4

2 回答 2

0

我建议您尝试从通过 DOM 访问图层切换到通过操作管理器访问图层。我很确定这样你会得到更好的表现。我对操作管理器代码很糟糕,所以我不能给你一个可行的例子——只是谷歌的东西:)

于 2013-10-25T13:54:42.947 回答
0

对我来说运行良好且快速,但您没有说明源 psd 有多大。

Anyhoo,看看这里: Action Manager layer search

我无法运行它,因为我正在运行良好的旧 CS2。耶哈!

于 2013-10-25T16:25:02.300 回答