PS使用JSX脚本配合“动作”录制“移除”实现批处理AI移除水印、保存PNG并关闭

使用场景

  • 大批量图片去除水印
  • 图片尺寸/水印形状位置 每张都不相同,需手动划定选区
  • 使用 PS AI消除功能(需正版账号登录)

思路

先手动为多张图片划定水印选区,随后:

  • 自动依次执行“消除”功能
  • 自动保存PNG到指定文件夹
  • 保存后自动关闭

依次对所有打开的、划定了选区的工程执行以上操作。

JSX代码

#target photoshop

app.displayDialogs = DialogModes.NO;

// 你录制的动作组名
var ACTION_SET_NAME = "AI_Action";

// 你录制的动作名
var ACTION_NAME = "AI_Remove";

var outputFolder = Folder.selectDialog("选择 PNG 输出文件夹");
if (!outputFolder) {
    alert("未选择输出文件夹");
    exit();
}

// 如果执行移去失败,是否也关闭 PSD
// 建议 false,避免失败时误关闭没处理好的文件
var CLOSE_FAILED_DOCS = false;

var total = app.documents.length;
var successCount = 0;
var skipCount = 0;
var failList = [];

for (var i = total - 1; i >= 0; i--) {
    app.activeDocument = app.documents[i];
    var doc = app.activeDocument;

    var docName = getOriginalDocName(doc);

    try {
        if (!hasSelection()) {
            skipCount++;
            failList.push(docName + ":没有活动选区,已跳过");
            continue;
        }

        // 执行你录制的“移去 / Remove”动作
        app.doAction(ACTION_NAME, ACTION_SET_NAME);

        // 导出 PNG,使用原始 PSD / PSB 文件名
        var baseName = docName.replace(/\.[^\.]+$/, "");
        var saveFile = makeUniqueFile(outputFolder, baseName, ".png");

        var opts = new PNGSaveOptions();
        opts.compression = 6;
        opts.interlaced = false;

        doc.saveAs(saveFile, opts, true, Extension.LOWERCASE);

        successCount++;

        // 关闭 PSD / PSB,不保存修改
        doc.close(SaveOptions.DONOTSAVECHANGES);

    } catch (e) {
        failList.push(docName + ":失败 - " + e.message);

        if (CLOSE_FAILED_DOCS) {
            try {
                doc.close(SaveOptions.DONOTSAVECHANGES);
            } catch (closeErr) {}
        }
    }
}

var msg = "完成。\n\n成功导出:" + successCount + " 个\n跳过:" + skipCount + " 个";

if (failList.length > 0) {
    msg += "\n\n问题列表:\n" + failList.join("\n");
}

alert(msg);

// =========================
// 工具函数
// =========================

function getOriginalDocName(doc) {
    try {
        return decodeURI(doc.fullName.name);
    } catch (e) {
        return decodeURI(doc.name);
    }
}

function hasSelection() {
    try {
        var b = app.activeDocument.selection.bounds;
        return true;
    } catch (e) {
        return false;
    }
}

function makeUniqueFile(folder, baseName, ext) {
    var file = new File(folder.fsName + "/" + baseName + ext);
    var index = 1;

    while (file.exists) {
        file = new File(folder.fsName + "/" + baseName + "_" + index + ext);
        index++;
    }

    return file;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇