You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Photoshop脚本清除EXIF、XMP-dc及IPTC元数据描述?

需求:通过Photoshop脚本清除图片三类描述标签

需要从TIF、PSD、PSB格式图片中移除以下标签:

  • [EXIF:IFD0] ImageDescription
  • [XMP:XMP-dc] Description
  • [IPTC] Caption-Abstract

已通过ExifTool实现该需求,命令如下:

exiftool -m -overwrite_original_in_place -EXIF:ImageDescription= -XMP-dc:Description= -IPTC:Caption-Abstract= FILE

但需要将功能整合到Photoshop事件管理器(「文档打开时」动作)或Automator脚本(JavaScript/AppleScript)中,避免额外安装ExifTool。


一、Photoshop内运行的JavaScript脚本(适配事件管理器)

可直接绑定到Photoshop「文档打开时」事件,一次性清除三类标签:

function removeAllDescriptions() {
    // 校验运行环境与文档状态
    if (app.name.search("Photoshop") === -1 || !documents.length) {
        alert("请在Photoshop中打开文档后运行此脚本");
        return;
    }

    // 加载Adobe XMP脚本库
    if (ExternalObject.AdobeXMPScript === undefined) {
        ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
    }

    // 获取当前文档XMP元数据
    var xmp = new XMPMeta(activeDocument.xmpMetadata.rawData);

    // 1. 清除XMP-dc:Description(覆盖单属性/多语言数组两种形式)
    xmp.deleteProperty(XMPConst.NS_DC, "description");
    while (xmp.doesArrayItemExist(XMPConst.NS_DC, "description", 1)) {
        xmp.deleteArrayItem(XMPConst.NS_DC, "description", 1);
    }

    // 2. 清除EXIF:ImageDescription
    xmp.deleteProperty(XMPConst.NS_EXIF, "ImageDescription");

    // 3. 清除IPTC:Caption-Abstract
    xmp.deleteProperty(XMPConst.NS_IPTC_CORE, "CaptionAbstract");

    // 将修改后的XMP写回文档
    activeDocument.xmpMetadata.rawData = xmp.serialize();
}

removeAllDescriptions();

脚本说明

  • 同时处理三类标签,兼容单属性和多语言数组形式的描述,无需多次运行
  • 适配PSD/PSB/TIF格式,可直接添加到Photoshop「动作」,再通过「事件管理器」绑定到「文档打开」事件

二、Automator中独立运行的JavaScript脚本(无需打开Photoshop)

适合在Automator工作流中批量处理文件,无需启动Photoshop:

// 可替换为Automator传入的文件,示例为指定路径文件
var targetFiles = [File("/path/to/your/file.tif"), File("/path/to/your/file.psd")];

function clearDescriptions(file) {
    // 加载Adobe XMP脚本库
    if (!ExternalObject.AdobeXMPScript) {
        ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript');
    }

    // 打开文件并获取XMP数据
    var xmpFile = new XMPFile(file.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
    var xmp = xmpFile.getXMP() || new XMPMeta();

    // 清除三类标签
    xmp.deleteProperty(XMPConst.NS_DC, "description");
    while (xmp.doesArrayItemExist(XMPConst.NS_DC, "description", 1)) {
        xmp.deleteArrayItem(XMPConst.NS_DC, "description", 1);
    }
    xmp.deleteProperty(XMPConst.NS_EXIF, "ImageDescription");
    xmp.deleteProperty(XMPConst.NS_IPTC_CORE, "CaptionAbstract");

    // 保存修改并关闭文件
    if (xmpFile.canPutXMP(xmp)) {
        xmpFile.putXMP(xmp);
    }
    xmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}

// 批量处理目标文件
targetFiles.forEach(function(file) {
    if (file.exists) {
        clearDescriptions(file);
    }
});

使用注意

  • Automator中选择「运行JavaScript」动作,需确保系统已随Photoshop安装Adobe XMP脚本库
  • 可通过Automator的「获取指定的 Finder 项目」动作批量导入文件,替换脚本中的targetFiles变量

关键说明

  • 此前脚本需运行两次的原因:XMP描述可能同时存在单属性和多语言数组两种形式,脚本通过while循环清除所有数组项,确保一次性清理完成
  • 三类标签对应的XMP命名空间:
    • XMP-dc:Description → XMPConst.NS_DC
    • EXIF:ImageDescription → XMPConst.NS_EXIF
    • IPTC:Caption-Abstract → XMPConst.NS_IPTC_CORE

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:40:50