About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Aug

    1

    PSD 图层批量保存为 PNG 格式

    • 1 Comments
    • Photoshop! WOW
    • 发布:古树
    • 引用:0
    • 浏览:

    帮同事写的批量将 PSD 文件的图层导出保存为 PNG 格式,一般懂点 JS 的人应该都可以看的懂吧?我和同事用的都是 Photoshop CS6 版本,所以我是直接在 Adobe Extendscript Toolkit CS6 中编写的代码和执行的。如果是绿色版本的 CS6 ,也可以通过新建一个 *.js 或 *.jsx 文件后,以文本的方式复制以下代码,然后通过 PS CS6 的“文件——脚本——浏览”,然后执行脚本文件(注:低版本的 PS 中我没有试过,可能需要 CS5 以上的版本才能运行,因为我查看的官方帮助手册是 CS5 版本)。

    #target photoshop
    app.bringToFront();

    //有用的参数集
    //app.documents.length 
    //app.activeDocument.activeLayer;

    var inputFolder = Folder.selectDialog("先选择一个输入文件夹");
    //var outputFolder = Folder.selectDialog("然后选择一个输出文件夹");

    var fileList = inputFolder.getFiles();
    for (var i = 0; i<fileList.length; i++) {

        if (fileList[i] instanceof File && !fileList[i].hidden && checkPSDFile(fileList[i])) {

            open(fileList[i]);
            runNow();
        }
    }

    function checkPSDFile(inFileName) {

        var lastDot = inFileName.toString().lastIndexOf(".");

        if (lastDot == -1) {
            return false;
        }

        var extension = inFileName.toString().substr(lastDot+1);
        extension = extension.toLowerCase();

        if (extension == "psd") {
            return true;
        }
        return false;
    }

    function runNow() {

        if (documents.length == 0) {

            alert("没有可处理的文档");

        } else {
            if (activeDocument.mode != DocumentMode.RGB) {
                //如果要保存为PNG格式,必须先将文档颜色模式改变RGB
                app.activeDocument.changeMode(ChangeMode.RGB);
            }
            var name = app.activeDocument.name;

            var lastDot = name.lastIndexOf(".");

            if (lastDot>-1) {
                name = name.substr(0, lastDot);// 默认的文件名,除去文件psd后缀的名称
            }
            var layers = activeDocument.layers;

            for (var i = 0, j = 0; i<layers.length; i++) {
                var layer = layers[i];
                layer.name = i;
                layer.visible = false;
            }
            for (var i = 0; i<layers.length; i++) {
                var layer = layers[i];
                layer.visible = true;

                //与PSD源文件相同的路径
                var path = activeDocument.path;
                var saveFile = new File(path+"/"+name+"_"+layer.name+".png");

                //输出到指定文件夹
                //var saveFile = new File(outputFolder + "/" + name + "_" + layer.name +".png"); 
                if (saveFile.exists) {
                    saveFile.remove();
                }

                var pngSaveOptions = new PNGSaveOptions();
                activeDocument.saveAs(saveFile,pngSaveOptions,true,Extension.LOWERCASE);

                layer.visible = false;
            }
            activeDocument.close(SaveOptions.SAVECHANGES);//保存并关闭源文件
            // activeDocument.close(SaveOptions.DONOTSAVECHANGES);//不保存关闭源文件
        }
    }
    Post Comment.
    quote 1.古树悬叶
    2014/8/2 16:39:50
    JSX API 手册(CS5版):http://jongware.mit.edu/pscs5js_html/psjscs5/inxx.html
    由 hglgsxy 于 2014-8-2 17:16:37 最后编辑

    发表评论