read/write Windows 图片标签(关键字)

read/write Windows image tags (keywords)

.

如何从 Windows 上的文件中 read/write 这些 标签

我试图在 javascriptnode.js 中实现它,但未能在任何语言,所以我正在寻找任何线索。

.

单词 tags(有时称为 keywords)似乎很不幸地被选中了,因为它似乎通常描述某个网站的任何元数据文件,例如 EXIF。然而,在 windows 中,您可以将此类 描述性标签 保存为文件 tags 之一。首先 - 关于它们的真正称呼有什么想法吗?

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

.

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

[编辑.1]

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

答案是:

  1. 这些 Windows 标签 真的叫做 EXIF XPKeywordsSee 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,我只是将参数更改为:

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

.

我找到了绕过它的方法,但我知道它不是通过 shell 命令执行的,所以我会很平静。因此,问题仍然悬而未决——你能建议一个好的接口来读取和写入 node.js 中的 EXIF 标签吗?

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

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