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

2024-05-07

我有一个 Node.js 服务器,其工作是下载 JPEG 图像,将某些数据写入几个 IPTC 字段(例如Iptc.Application2.Caption)并将图像传递给另一个服务。

理想情况下,我想将 IPTC 数据写入内存缓冲区(而不将图像写入本地文件系统)。如果做不到这一点,我可以采用一种解决方案:下载文件,将文件存储到 FS,然后应用 IPTC 数据。

我有这个工作https://github.com/dberesford/exiv2node https://github.com/dberesford/exiv2node,但它不适用于 Node.js v10。这取决于exiv2 http://www.exiv2.orgC++ 库使得容器化运行变得混乱。

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


我会用exiftool 供应商 https://www.npmjs.com/package/exiftool-vendored,它只是一个包装exiftool 命令行实用程序 https://sno.phy.queensu.ca/~phil/exiftool/。它还将安装 exiftool 二进制文件,如果您已经安装了 exiftool,则可以使用exiftool 没有这个二进制文件 https://www.npmjs.com/package/node-exiftool

安装 exiftool:

npm install --save exiftool-vendored

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

例如我将添加Artist and 版权标签,exiftool 会放入对应的 IPTC 标签。

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

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

exiftool.write将返回一个您可以在计算其他事情时等待的承诺。有关承诺的更多信息 https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call/14220323#14220323.

使用 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
[...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请推荐一个用于将 IPTC 数据写入图像的 Node 模块? 的相关文章

随机推荐