读/写Windows图像标签(关键字)

问题描述 投票:2回答:2

.

如何从Windows上的文件读取/写入这些标签?

我试图在javascript和node.js中实现它,但是根本找不到任何语言的信息,所以我正在寻找任何线索。

.

遗憾的是,单词标签(有时称为关键字)似乎被选中,因为它似乎通常描述文件的任何元数据,例如EXIF。然而,在Windows中,您可以将这些描述性标记保存为文件标记之一。首先 - 关于它们如何真正被称为的任何想法?

我知道你可以使用各种程序修改它们,例如。在Adobe Bridge中,它们被称为文件的关键字。

.

注意:我确实认识到这不是存储文件标签的最佳解决方案。我真的只需要使用这些,因为我正在使用的图像库正在大量使用它们。

[Edit.1]

@Ben Fortune:谢谢你的线索!尽管如此,Exif-parser提供了一种阅读这些标签的方法,但不允许写作。

javascript windows node.js file exif
2个回答
1
投票

答案是:

  1. 这些Windows标记实际上称为EXIF XPKeywords。 See the full list here
  2. 使用Exif Parser解析文件有利于阅读,但它们以十进制ASCII代码的形式返回。运用 String.fromCharCode() 并循环遍历返回的整数我设法将标记作为字符串。
  3. 但是,对于阅读和写作,我最终选择了exiftool。因此,我正在使用 function run_cmd(cmd, args, callBack ) { var spawn = require('child_process').spawn; var child = spawn(cmd, args); var resp = ""; child.stdout.on('data', function (buffer) { resp += buffer.toString() }); child.stdout.on('end', function() { callBack (resp) }); } // () 执行exiftool作为shell命令(More on spawning shell command

.

为了阅读我正在经过

    run_cmd('exiftool', ['-XPKeywords', myFilepath])

阅读XPKeywords标签和

    theShellResult.match(/:(.*)/)

过滤掉关键字(Nicely explained here)。

.

为了编写(附加)新的XPKeywords我只是将args更改为:

    var writeArg = "-XPKeywords<$XPKeywords " + myNewKeywords
    run_cmd('exiftool', [writeArg, myFilepath])

.

我找到了解决方法,但我知道它不是通过shell命令执行的。因此,问题仍然存在 - 您是否可以建议在node.js中读取和编写EXIF标记的界面?


1
投票

我不想调用外部命令。您可以使用名为node-ipct的节点模块。该模块提取包括XPKeywords在内的ipct信息。

https://www.npmjs.com/package/node-iptc

© www.soinside.com 2019 - 2024. All rights reserved.