photoshop 批量导出每个图层为独立图像

// 导出所有图层为单独文件,并以图层名命名
#target photoshop

// 检查是否有打开的文档
if (app.documents.length === 0) {
    alert("请先打开一个包含多个图层的PSD文件!");
} else {
    var doc = app.activeDocument;

    // 创建导出文件夹
    var outputFolder = Folder.selectDialog("请选择保存导出的文件夹");
    if (outputFolder == null) {
        alert("未选择文件夹,脚本已取消!");
    } else {
        // 保存原始状态
        var originalRulerUnits = app.preferences.rulerUnits;
        app.preferences.rulerUnits = Units.PIXELS;

        // 遍历所有图层并导出
        for (var i = 0; i < doc.layers.length; i++) {
            var layer = doc.layers[i];

            if (layer.typename === "ArtLayer" && layer.visible) {
                // 仅导出可见图层
                var layerName = layer.name.replace(/[\\\/:*?"<>|]/g, ""); // 移除非法字符
                var layerFile = new File(outputFolder + "/" + layerName + ".png");

                // 复制图层并保存
                duplicateAndSaveLayer(doc, layer, layerFile);
            }
        }

        // 恢复原始状态
        app.preferences.rulerUnits = originalRulerUnits;

        alert("所有图层已成功导出!");
    }
}

// 复制当前图层并保存为文件
function duplicateAndSaveLayer(doc, layer, file) {
    var tempDoc = app.documents.add(doc.width, doc.height, doc.resolution, layer.name, NewDocumentMode.RGB, DocumentFill.TRANSPARENT);
    app.activeDocument = doc;
    layer.copy();
    app.activeDocument = tempDoc;
    tempDoc.paste();

    var pngSaveOptions = new PNGSaveOptions();
    tempDoc.saveAs(file, pngSaveOptions, true, Extension.LOWERCASE);
    tempDoc.close(SaveOptions.DONOTSAVECHANGES);
}

  将上述内容保存为:ExportLayersAsFiles.jsx

  • 然后,打开Photoshop。
  • 点击菜单 文件 > 脚本 > 浏览...,选择保存的 .jsx 文件。
  • 运行脚本即可。
posted @ 2024-12-14 00:18  河在谈  阅读(9)  评论(0编辑  收藏  举报