如何用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
- XMP-dc:Description →
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

