@colorhythm/exiftool-wasm

中文文档
1.0.7发布于 2026/11/10Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 3216

Phil Harvey的ExifTool由WebAssembly提供动力,在浏览器和Node.js环境中使用0perl从文件中提取元数据

中文使用文档
文档目录16 节
  1. 安装
  2. 说明
  3. 使用量
  4. 基本用途
  5. 写入元数据
  6. 提取特定元数据
  7. JSON 输出
  8. 提取嵌入二进制
  9. 重要说明
  10. API 参考
  11. 解析元数据( C)
  12. 写入元数据( C)
  13. 构建和验证
  14. 版本身份和自动发布
  15. 承认
  16. 许可证
exiftool_wasm

@ colorhythm/ exiftool- wasm

与 Exif工具 13.62 (中文(简体) ) · 包装 1.0.7 国家。 。 。 .

Exif工具软件 由WebAssembly提供动力,在浏览器和节点环境中从文件中提取并写入元数据 零点。 。 。 .

安装

npm install @colorhythm/exiftool-wasm

说明

这个软件包提供基于WebAssembly的ExifTool的应用,在浏览器和Node.js环境中都有效. 它能发挥杠杆作用 零点 执行 ExifToo 而不要求任何本地二进制或系统依赖.

使用量

基本用途

import { parseMetadata } from '@colorhythm/exiftool-wasm';

// Browser usage with File API
document.querySelector('input[type="file"]').addEventListener('change', async (event) => {
  const file = event.target.files[0];
  const result = await parseMetadata(file);

  if (result.success) {
    console.log(result.data);
  } else {
    console.error('Error:', result.error);
  }
});

写入元数据

import { writeMetadata } from '@colorhythm/exiftool-wasm';

const result = await writeMetadata(file, {
  'Author': 'John Doe',
  'Title': 'My Photo',
  'Keywords': 'nature,photography'
});

if (result.success) {
  // result.data contains the modified file as Uint8Array
  const modifiedBlob = new Blob([result.data]);
}

提取特定元数据

import { parseMetadata } from '@colorhythm/exiftool-wasm';

const result = await parseMetadata(file, {
  args: ['-Author', '-CreateDate', '-Make', '-Model']
});

if (result.success) {
  console.log(result.data);
}

JSON 输出

import { parseMetadata } from '@colorhythm/exiftool-wasm';

const result = await parseMetadata(file, {
  args: ['-json', '-n'],
  transform: (data) => JSON.parse(data)
});

if (result.success) {
  // Typed access to properties
  console.log(result.data); // { ... }
}

提取嵌入二进制

过 binary: true 作为原始接收 stdout Uint8Array - 所需经费 ExifTool 软件 -b 产出(缩略图/审查、MPF图像和人类发展报告) 增益地图、深度地图、电算中心剖面图、拖车有效载荷),不是UTF-8 并因文本解码而堕落.

import { parseMetadata } from '@colorhythm/exiftool-wasm';

const result = await parseMetadata(file, {
  // -m ignores minor warnings, -q suppresses info messages — recommended,
  // since any stderr output is treated as failure.
  args: ['-b', '-ThumbnailImage', '-m', '-q'],
  binary: true,
});

if (result.success) {
  const blob = new Blob([result.data], { type: 'image/jpeg' });
  // result.data is a byte-exact Uint8Array
}

注释:

  • transform 不应用二进制模式.
  • 提取多个 -b 在一个调用中标记其字节 没有分隔符的 stdout – 提取每个呼叫一个标签, 或使用 args: ['-json', '-b', ...] (无) binary)将每个标签作为 base64:- JSON的前缀字符串.

重要说明

  • 在浏览器环境中,通过 File 对象直接来自文件输入。 不要将其转换为ArrayBuffer或Uint8Array.
  • 此软件包使用同步的网络 API 处理文件, 它允许处理文件而不将全部输入加入内存 。 2GB以上的文件不包含在自动放行门;运行时间和格式限制仍然适用.
  • ExifTool完全在浏览器或Node.js环境中执行 - 没有为元数据提取提出服务器请求.

API 参考

解析元数据( C)

async function parseMetadata<TReturn = string>(
  file: Binaryfile | File,
  options: ExifToolOptions<TReturn> = {}
): Promise<ExifToolOutput<TReturn>>

参数

  • file: 浏览器 File 对象或一个 Binaryfile 对象为 name 财务报告和审定财务报表 data 属性.
  • options: 元数据提取的配置选项.

写入元数据( C)

async function writeMetadata(
  file: Binaryfile | File,
  tags: ExifTags,
  options: ExifToolOptions = {}
): Promise<ExifToolOutput<ArrayBuffer>>

参数

  • file: 浏览器 File 对象或一个 Binaryfile 对象为 name 财务报告和审定财务报表 data 属性.
  • tags: 含有要写入的元数据标记的对象,其中密钥为标记名,而值为标记值.
  • options: 写入操作的配置选项.

返回值

返回承诺 ExifToolOutput 对象 :

type ExifToolOutput<TOutput> =
  | {
      success: true;
      data: TOutput;
      error: string;
      exitCode: 0;
    }
  | {
      success: false;
      data: undefined;
      error: string;
      exitCode: number | undefined;
    };

构建和验证

该套装售出零活口适配器. 其二进制输出和工人修正 (d) 更新不得以 独立零重机软件包.

使用节点24和Bun 1.3.10:

npm ci
bun run build
npm test

build 在发布声明和浏览器无害环境管理前删除先前的输出 捆绑 配对 src/exiftool 财务报告和审定财务报表 src/zeroperl/zeroperl.wasm 输入来自 单笔 零点. 不可改变 运行时间和附带测试修改记录于 release-config.json。 。 。 .

为全面释放验证, 提供取出的官方 ExifToo 源树 其归档校验和已被验证 :

npx playwright install chrome webkit
EXIFTOOL_VERSION=$(node -p "require('./exiftool-build.json').upstream.version")
npm run test:release -- --expected-version "$EXIFTOOL_VERSION" \
    --source "/absolute/path/to/Image-ExifTool-$EXIFTOOL_VERSION" \
    --output /absolute/path/to/release-evidence

这个包装了实际的 npm 文物, 在节点和浏览器窗口测试它 模块用户环境,并将元数据与本地ExifTool进行比较。 需求 检查包括自定义 -config 标记、 精确的二进制字节、 Unicode 写入/读取, 不变的输入字节,默认的 WASM 资产加载,以及 MacRoman QuickTime 标记. 浏览器自动化覆盖了Chrome和Playwright WebKit. Actually Safari, Firefox,和超过2GB的文件不是放行门覆盖.

版本身份和自动发布

从自动发布开始,每个npm tarball包括 exiftool-build.json,导出为 @colorhythm/exiftool-wasm/build-info。 记录准确的ExifTool版本,官方源码校验和Git修订版, Perl版本,构建寄存器修订,工作流程 URL,以及被打包的文件散列. Npm软件包版本 识别我们的包装 发行与菲尔分开 ExifTool 版本 (英语). 国 际 -ver 返回准确的运行时间版本字符串; JSON 元数据使用数字,并可能投放后缀为零.

私人 释放控制器 启动时23分每小时发出一次检查。 公开发布 工作流程还支持手动发送. 它只有在所有验证通过和存储器后才能自动发布 变量 EXIFTOOL_AUTO_PUBLISH 实值 true准确测试的柏油球已经公布, 然后从 npm 下载,并在创建释放标记前检查。 一个建筑 单凭针头或源头所犯从未被视为出版证明.

见 释放操作 用于激活,回击,出处, 和控制器配置.

承认

这个一揽子计划由三个项目承担,我们感谢:

  • Exif工具软件 以 菲尔・哈维 三十年来 他的引擎提供元数据解释.
  • 书写/工具 以 安德鲁·桑普森 ——"ExifToo-in-WebAssembly"的原始包装这个 软件包来自forked.
  • 零点 (6over3/安德鲁) Sampson)——由沙盒组成的Perl-to-WASI运行时间,使得运行 在浏览器中 ExifToo 完全可能 .

我们的叉子增加了字节安全 二进制取出( O)binary: true),工作范围 支助, -config- 第一次处理和包装修正——见承诺 历史.

许可证

Apache 许可证,2.0版本

版本与发布记录

@colorhythm/exiftool-wasm 共发布 8 个版本,首次发布于 2026/06/18;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.7latest2026/11/10今天
1.0.62026/11/054 天前
1.0.52026/10/3011 天前
1.0.42026/07/024 个月前
1.0.32026/07/024 个月前
1.0.22026/07/024 个月前

关于 @colorhythm/exiftool-wasm 的常见问题

@colorhythm/exiftool-wasm 是什么?

Phil Harvey的ExifTool由WebAssembly提供动力,在浏览器和Node.js环境中使用0perl从文件中提取元数据

如何安装 @colorhythm/exiftool-wasm?

在项目目录运行 npm install @colorhythm/exiftool-wasm,或使用 pnpm add / yarn add / bun add。

@colorhythm/exiftool-wasm 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@colorhythm/exiftool-wasm 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@colorhythm/exiftool-wasm 可以商用吗?

@colorhythm/exiftool-wasm 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@colorhythm/exiftool-wasm 的下载量有多少?

根据 npm 官方下载统计,@colorhythm/exiftool-wasm 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,216 次,日均约 107 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@colorhythm/exiftool-wasm 还在维护吗?

最新版本 1.0.7 发布于 2026/11/10(今天);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/06/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。