如今,随着数码摄影的普及,我们对照片的需求越来越多。而像相机照片这些东西,通常在照片元数据(metadata)中包含了很多需要的信息,例如拍摄时间、地点、相机型号等。常规的图片查看器、编辑器通常都支持查看和修改这些信息,但很多时候我们需要在程序中读取或者修改它们。本篇文章将介绍一款使用 Node.js 操作图片元数据的 npm 包 @amokrushin/exiftool-vendored.pl 的使用方法。
exiftool-vendored.pl 是什么
exiftool-vendored.pl 是 Perl 语言编写的一款用于操作图片元数据的工具,不仅支持常见的图片格式如 JPEG、PNG、TIFF 等,还通常支持 RAW(未经处理的)文件格式,例如 CR2(Canon RAW)和 NEF(Nikon RAW)等。exiftool 同时也是一个命令行工具,用于在控制台中查询和修改图片元数据。但由于它是 Perl 编写,需要在当地安装 Perl 环境,这使得 exiftool 在 node.js 等非 Perl 环境中被调用很困难。
因此,amokrushin 开发了 exiftool-vendored.pl 包,并将它打包为 npm 包,这样我们可以用 JavaScript 或 TypeScript 代码在 node.js 环境中轻松调用 exiftool。
安装 @amokrushin/exiftool-vendored.pl
在使用 exiftool-vendored.pl 包之前,我们需要在项目中安装它。可以使用 npm 命令安装它,命令如下:
npm install --save @amokrushin/exiftool-vendored.pl
安装完成后,我们就可以在 node.js 中使用 @amokrushin/exiftool-vendored.pl 了。
如何使用 exiftool-vendored.pl
对于初次使用 exiftool-vendored.pl 的程序员,可能需要更多的指导。下面,我们将按照官方文档的内容,一步一步地介绍使用方法。
导入 exiftool-vendored.pl
首先,我们需要在文件中导入 @amokrushin/exiftool-vendored.pl:
const exiftool = require('@amokrushin/exiftool-vendored');
或者,如果您使用 ES6 中的 Import,您可以这样写:
import exiftool from '@amokrushin/exiftool-vendored';
执行 exiftool 命令
因为 exiftool-vendored.pl 本质上是一个命令行工具,因此我们需要像在终端中一样执行命令。此时,我们可以调用 exiftool.run() 方法来执行 exiftool 命令。以下是使用 exiftool 命令读取单个图片的元数据的示例(假设图片路径为 /path/to/image.jpg):
exiftool.run('/path/to/image.jpg').then((metadata) => { console.log(metadata); });
此代码段使用 exiftool 命令读取 /path/to/image.jpg 图片的元数据,并将元数据打印到控制台中。
添加自定义参数
如同在 terminal 中使用 exiftool 命令时一样,在使用 exiftool-vendored.pl 时,我们可以添加自定义参数。
例如,如果我们想要仅获取图片的时间信息,可以使用以下代码段:
exiftool.run('/path/to/image.jpg', ['-DateTimeOriginal']).then((metadata) => { console.log(metadata); });
该示例中,我们添加了参数 -DateTimeOriginal
,以仅获取图片的时间信息。
传递多个文件
类似 exiftool /path/to/image1.jpg /path/to/image2.jpg
的终端命令,在使用 exiftool-vendored.pl 时,我们也可以将多个文件路径传递给 run() 方法。
例如,如果我们要获取多个图片的时间信息和 GPS 坐标信息,可以使用以下代码段:
-- -------------------- ---- ------- -------- ---------------------------- ----------------------- - -------------------- --------------- ---------------- -- ---------------- -- - ---------------------- ---
在此示例中,我们输入了两个文件路径,并传递了参数 -DateTimeOriginal
、-GPSLatitude
和 -GPSLongitude
,以获取这两个文件的元数据信息。
获取 exiftool 版本号
最后,我们也可以获取 exiftool 版本号。为此,可以调用 version() 方法,如下所示:
const version = exiftool.version(); console.log(version);
总结
本篇文章介绍了如何在 node.js 环境下使用 @amokrushin/exiftool-vendored.pl 包读取和修改图片元数据。通过本文所述的方法,您可以方便地获取每张图片的信息,这对于图片管理和定位问题非常有用。无论您是想要批量编辑照片元数据,还是想要在项目中使用图片元数据,exiftool-vendored.pl 它都是你的好帮手。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055a1f81e8991b448d7c18