我有一个Node.js服务器,它的工作是下载JPEG图像,将某些数据写入几个IPTC字段(例如Iptc.Application2.Caption
),然后将图像传递给另一个服务。
理想情况下,我想将IPTC数据写入内存中的缓冲区(而无需将镜像写入本地文件系统)。失败的话,我可以使用一种解决方案,在该解决方案中,我将文件下载,存储到FS,然后应用IPTC数据。
我已经使用https://github.com/dberesford/exiv2node来工作了,但是在Node.js v10上却不起作用。而且它依赖于exiv2 C++库,这使运行容器化变得很困惑。
所以我的问题是:是否有一个不错的Node.js模块可以启用IPTC数据写入,并且不依赖于某些怪物C库?
最佳答案
我会使用exiftool-vendored,它只是the exiftool command line utility的包装。它还将安装exiftool二进制文件,如果您已经安装了exiftool,则可以使用exiftool without this binary
安装exiftool:
npm install --save exiftool-vendored
您添加的标签将放入支持它们的规范中,在本例中为IPTC。
例如,我将添加艺术家和版权标签,而exiftool将放置相应的IPTC标签。
const exiftool = require("exiftool-vendored").exiftool
const tags = {
artist:"David Lemon",
copyright:"2018 David Lemon"
};
exiftool.write("outernet.jpeg", tags);
exiftool.write
将返回一个 promise ,您可以在计算其他内容时等待。 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
[...]