代码之家  ›  专栏  ›  技术社区  ›  thomax

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

  •  0
  • thomax  · 技术社区  · 6 年前

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

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

    https://github.com/dberesford/exiv2node ,但它在Node.js v10上不起作用。这取决于 exiv2 C++库,这使得运行容器化变得麻烦。

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

    1 回复  |  直到 5 年前
        1
  •  5
  •   David Lemon amitgoyal    6 年前

    我会用 exiftool-vendored the exiftool command line utility exiftool without this binary

    安装exiftool:

    npm install --save exiftool-vendored
    

    您添加的标签被放入支持它们的规范中,在本例中为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
    [...]
    
    推荐文章