# @colorhythm/exiftool-wasm 中文文档

规范地址：https://npmcn.com/package/%40colorhythm/exiftool-wasm/

版本：1\.0\.7
npm 元数据更新时间：2026-11-09T19:44:39.214Z
中文译文更新时间：2026-11-10T12:16:14.363Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40colorhythm/exiftool-wasm
原文对照：https://npmcn.com/package/%40colorhythm/exiftool-wasm/?lang=original
项目主页：https://github.com/colorhythm/exiftool-wasm#readme
源码仓库：https://github.com/colorhythm/exiftool-wasm

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：28.2 MB，19 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-06-18T04:26:54.052Z
- 最新版本发布：2026-11-09T19:44:38.881Z
- 近 30 天下载量：3216（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 8 个）

## 中文简介

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

## 安装

```sh
npm install @colorhythm/exiftool-wasm
```

也可以使用：`pnpm add @colorhythm/exiftool-wasm`、`yarn add @colorhythm/exiftool-wasm`、`bun add @colorhythm/exiftool-wasm`

## README

![exiftool\_wasm](https://github.com/user-attachments/assets/14f30e46-c66a-4c7d-bd55-90a7db763aca)

# @ colorhythm/ exiftool- wasm

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

[Exif工具软件](https://exiftool.org/) 由WebAssembly提供动力,在浏览器和节点环境中从文件中提取并写入元数据 [零点](https://github.com/colorhythm/zeroperl)。 。 。 .

## 安装

```
npm install @colorhythm/exiftool-wasm
```

## 说明

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

## 使用量

### 基本用途

```typescript
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);
  }
});
```

### 写入元数据

```typescript
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]);
}
```

### 提取特定元数据

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

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

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

### JSON 输出

```typescript
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 并因文本解码而堕落.

```typescript
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)

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

#### 参数

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

### 写入元数据( C)

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

#### 参数

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

#### 返回值

返回承诺 `ExifToolOutput` 对象 :

```typescript
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:

```bash
npm ci
bun run build
npm test
```

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

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

```bash
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 元数据使用数字,并可能投放后缀为零.

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

见 [释放操作](https://npmcn.com/package/%40colorhythm/exiftool-wasm/RELEASING.md) 用于激活,回击,出处, 和控制器配置.

## 承认

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

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

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

## 许可证

Apache 许可证,2.0版本

## 常见问题

### @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 和提交记录判断。

