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

Posted

技术标签:

【中文标题】请推荐一个用于将 IPTC 数据写入图像的 Node 模块?【英文标题】:Please recommend a Node module for writing IPTC data to images? 【发布时间】:2018-11-28 08:57:40 【问题描述】:

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

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

我已经使用 https://github.com/dberesford/exiv2node 进行了此操作,但它不适用于 Node.js v10。而且它依赖于exiv2 C++ 库,这使得容器化运行变得混乱。

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

【问题讨论】:

你看github.com/Sobesednik/node-exiftool了吗? 【参考方案1】:

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

安装exiftool:

npm install --save exiftool-vendored

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

比如我会添加ArtistCopyright标签,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
[...]

【讨论】:

嗨@David,有没有不依赖二进制工具的npm?可以在浏览器中运行的东西。 不,它正在处理存储在服务器上的档案,并且是一项输入/输出昂贵的任务,这绝对是一项服务器工作。通常您可以将此类作业作为 cron 作业运行。 此答案不支持在不将图像存储在本地 FS 上的情况下编写标签,也不支持独立运行。但是还是!它解决了我的问题,我很高兴!赏金来之不易,好先生!

以上是关于请推荐一个用于将 IPTC 数据写入图像的 Node 模块?的主要内容,如果未能解决你的问题,请参考以下文章

从目标 C 中的图像读取非标准属性

如何在 Rails 或 iOS 上将图像组合成 JPG 图像/精灵并写入元数据

将二进制 JPEG 图像数据加载到 PHP 变量中以进行 MD5 散列

将图像保存到内存

如何使用 PHP 安全地将 JSON 数据写入文件

使用来自exiftool的GPS位置重命名图片