LOADING

加载过慢请开启缓存 浏览器默认开启

JSX Photoshop 脚本初体验

重复工作烦恼多,脚本开发解忧愁。
PS插件来助阵,自动操作省时力。

起因:工作中的需求。。。在重复的工作中,我发现部分重复的工作流程可能可以利用程序自动完成。于是去了解了一下如何自动化操作Photoshop。一开始我使用的是PS的“动作”功能,但发现它不太能满足工作中的需求。于是我去搜索PS插件的开发,了解到PS插件开发JSX是基于JavaScript的,这唉~ 这不就巧了,我正好会一点js。

例如,在我的工作流中需要将部分文字图层改为特定的内容;我发现哪些文字也会在文件名中体现,因此就有了下面这个脚本:

(function () {
    var doc = app.activeDocument;
    var regex = / /;
    var newText = doc.name.match(regex);
    if (newText && newText.length === 1) {
        // 更新文本内容
        setTextAll(doc, newText[0]);
    } else {
        alert("未修改文本!" + newText)
    }

    function setTextAll(doc, t) {
        var layers = doc.layers;
        for (var i = 0; i < layers.length; i++) {
            var currLayer = layers[i]
            if (currLayer.kind === LayerKind.TEXT) {
                if (currLayer.textItem.contents.search(/  /) !== -1) {
                    // currLayer.textItem.contents = t;
                    var tt = currLayer.textItem.contents
                    currLayer.textItem.contents = tt.replace(/ /, t)
                }
                continue
            } else if (currLayer.typename == 'LayerSet') {
                setTextAll(currLayer, t)
            }
        }
    }
})()

这很好理解,就是通过正则将特定内容替换。

后来我又了解到可以说是最有用的一个API。

app.doAction("action", "actionSet");

在当脚本无法完成需求时,就将其录制为动作;然后在脚本中调用。

….
………..

据我所知,JSX遵循ECMAScript3标准,这意味着它与JavaScript有许多不同之处,不支持JavaScript的新特性和语法,例如:let、箭头函数等。。。。

emmmmmmm………

就写到这吧。。。


end