请推荐一个用于将 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。
比如我会添加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
[...]
【讨论】:
嗨@David,有没有不依赖二进制工具的npm?可以在浏览器中运行的东西。 不,它正在处理存储在服务器上的档案,并且是一项输入/输出昂贵的任务,这绝对是一项服务器工作。通常您可以将此类作业作为 cron 作业运行。 此答案不支持在不将图像存储在本地 FS 上的情况下编写标签,也不支持独立运行。但是还是!它解决了我的问题,我很高兴!赏金来之不易,好先生!以上是关于请推荐一个用于将 IPTC 数据写入图像的 Node 模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 或 iOS 上将图像组合成 JPG 图像/精灵并写入元数据