请推荐用于将IPTC数据写入图像的Node模块吗?

时间:2018-11-28 08:57:41

标签: node.js image metadata iptc

我有一个node.js服务器,它的工作是下载jpeg图像,将某些数据写入几个IPTC字段(例如Iptc.Application2.Caption),然后将该图像传递给另一个服务。

理想情况下,我想将IPTC数据写入内存中的缓冲区(而不是将映像写入本地文件系统)。失败的话,我可以使用一个解决方案,在该解决方案中下载,将文件存储到FS,然后应用IPTC数据。

我已经使用https://github.com/dberesford/exiv2node了,但是在node.js v10上不起作用。而且它依赖于exiv2 C ++库,这使得运行容器化变得很混乱。

所以我的问题是:是否有一个像样的节点模块可以启用IPTC数据写入,并且不依赖于某些怪物C库?

1 个答案:

答案 0 :(得分:1)

我会使用exiftool-vendored,它只是the exiftool command line utility的包装。它还将安装exiftool二进制文件,如果您已经安装了exiftool,则可以使用exiftool without this binary

安装exiftool:

npm install --save exiftool-vendored

您添加的标签位于支持它们的规范中,在本例中为IPTC。

例如,我将添加 Artist Copyright 标签,而exiftool将放置相应的IPTC标签。

const exiftool = require("exiftool-vendored").exiftool

const tags = {
  artist:"David Lemon", 
  copyright:"2018 David Lemon"  
};
exiftool.write("outernet.jpeg", tags);

exiftool.write将返回一个承诺,您可以在计算其他内容时等待。 More info on promises

使用exiftool CLI,您可以检查标记是否正确写入文件:

$ node_modules/exiftool-vendored.exe/bin/exiftool.exe outernet.jpeg
ExifTool Version Number         : 11.20
File Name                       : outernet.jpeg
Directory                       : .
File Size                       : 4.6 kB
[...]
Artist                          : David Lemon
Y Cb Cr Positioning             : Centered
Copyright                       : 2018 David Lemon
Current IPTC Digest             : 2b3df19b0c67788262a0d0dced3b6d58
Coded Character Set             : UTF8
Envelope Record Version         : 4
[...]