# @exodus/react-native-image-picker 中文文档

规范地址：https://npmcn.com/package/%40exodus/react-native-image-picker/

版本：8\.2\.1-exodus-4
npm 元数据更新时间：2026-10-06T21:02:48.369Z
中文译文更新时间：2026-11-14T04:15:44.118Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40exodus/react-native-image-picker
原文对照：https://npmcn.com/package/%40exodus/react-native-image-picker/?lang=original
项目主页：https://github.com/ExodusMovement/react-native-image-picker
源码仓库：https://github.com/ExodusMovement/react-native-image-picker

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

- 包体积（解压后）：197 kB，60 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：react \*，react-native \*
- 首次发布：2021-11-25T12:43:18.592Z
- 最新版本发布：2026-01-06T17:14:51.499Z
- 近 30 天下载量：10503（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 1 个）

## 中文简介

允许您使用本地 UI 从设备库或直接从相机中选择媒体的 React 本地模块

## 安装

```sh
npm install @exodus/react-native-image-picker
```

也可以使用：`pnpm add @exodus/react-native-image-picker`、`yarn add @exodus/react-native-image-picker`、`bun add @exodus/react-native-image-picker`

## README

# @exodus/ react-native-image-挑取者 @qq

一个反应原生模块,允许您从设备库或相机中选择相片/视频.

[![npm downloads](https://img.shields.io/npm/dw/react-native-image-picker)](https://img.shields.io/npm/dw/react-native-image-picker) [![npm package](https://img.shields.io/npm/v/react-native-image-picker?color=red)](https://img.shields.io/npm/v/react-native-image-picker?color=red) [![License](https://img.shields.io/github/license/react-native-image-picker/react-native-image-picker?color=blue)](https://github.com/react-native-image-picker/react-native-image-picker/blob/main/LICENSE.md)

## 安装

```bash
yarn add @exodus/react-native-image-picker
```

### 新建筑

为了利用新建筑的运行

#### iOS系统

```bash
RCT_NEW_ARCH_ENABLED=1 npx pod-install ios
```

#### 机器人

设定 `newArchEnabled` 改为 `true` 内部 `android/gradle.properties`

### 预配置( AKA 不使用新架构)

```bash
npx pod-install ios
```

## 安装后步骤

### iOS系统

将合适的密钥添加到您的 `Info.plist` 根据您的要求:

| 所需经费 | 密钥 |
| --- | --- |
| 从相片中选择图像/视频 | NSPhoto 图书馆用户描述 |
| 抓取图像 | NSCameraUsage 描述 |
| 抓取视频 | NSCameraUsage 描述和NSMicrophone Usage 描述 |

### 机器人

无需权限( N)`saveToPhotos` 需要许可 [检查](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-note-on-file-storage)) (中文(简体) ).

说明: 这个库不需要 `Manifest.permission.CAMERA`如果您的应用程序宣布使用此许可, 您必须在使用前获得许可 `launchCamera`。 。 。 .

#### 针对Android API 级别低于 30

如果你的应用程序 `minSdkVersion` 它没有包括或取决于 `androidx.activity:activity:1.9.+` 或更新版本,您需要将以下行添加到您的依赖部分 `app/build.gradle` 用于确保支持背出AndroidX Photo Picker的文件 :

```groovy
dependencies {
    ...
    implementation("androidx.activity:activity:1.9.+")
    ...
}
```

此外,你可能需要更新 `AndroidManifest.xml` 以触发后移植相片拾取器的安装。 作为参考,您可以在 `example/android/app/src/main/AndroidManifest.xml` 财务报告和审定财务报表 `example/android/app/build.gradle`。 。 。 .

详见AndroidX Photo Picker上的Android文件: [https://developer.android.com/training/data-storage/shared/photopker 互联网档案馆的存檔,存档日期2013-12-21](https://developer.android.com/training/data-storage/shared/photopicker)

## API 参考

## 方法

```js
import {
  launchCamera,
  launchImageLibrary,
} from '@exodus/react-native-image-picker';
```

### `launchCamera()`

发射相机拍摄相片或视频.

```js
launchCamera(options?, callback);

// You can also use as a promise without 'callback':
const result = await launchCamera(options?);
```

见 [选项](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-options) 详情请查阅 `options`。 。 。 .

这个 `callback` 将调用一个响应对象,参见 [响应对象](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-the-response-object)。 。 。 .

### `launchImageLibrary`

发射画廊取出图像或视频.

```js
launchImageLibrary(options?, callback)

// You can also use as a promise without 'callback':
const result = await launchImageLibrary(options?);
```

见 [选项](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-options) 详情请查阅 `options`。 。 。 .

这个 `callback` 将调用一个响应对象,参见 [响应对象](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-the-response-object)。 。 。 .

## 选项

| 选项 | iOS系统 | 机器人 | 说明 |
| --- | --- | --- | --- |
| 介质类型 |  |  | `photo` 或者说 `video` 或者说 `mixed`(单位:千美元)`launchCamera` android 不支持“ 混合” . |
| 限制MIME 类型 | 无 |  | 包含允许选择的 mime 类型的阵列 。 默认为空( 每件事) . |
| 最大宽度 |  |  | 以调整图像大小. |
| 最大重度 |  |  | 以调整图像大小. |
| 视频质量 |  |  | `low`, (中文(简体) ), `medium`,或 `high` 在iOS上, `low` 或者说 `high` 安卓号. |
| 期限 |  |  | 视频最长持续时间(以秒计). |
| 质量 |  |  | 0到1号,照片. |
| 转换质量 | 无 |  | 从HEIC/HEIF转换为JPEG,0到1. 默认是 `0.92` |
| 相机类型 |  |  | "back" 或"front"(在少数和机器人设备中可能不支持). |
| 包含Base64 |  |  | 若为 `true`,创建图像的 Base64 字符串(Avoid由于性能原因在大图像文件中使用). |
| 包含Extra |  |  | 若为 `true`,其中将包括需要请求库权限的额外数据(即exif数据). |
| 保存图 |  |  | (宝莲)只用于 `launchCamera`,将抓取的图像/视频文件保存到公众照片. |
| 选择范围 |  |  | 支持提供任意整数值。 使用 `0` 允许使用 iOS 版本 & Android 14 & Android 版本 & Android 13 上的任何文件数量。 默认是 `1`。 。 。 . |
| 演示文稿样式 |  | 无 | 控制拾取者如何呈现. `currentContext`, (中文(简体) ), `pageSheet`, (中文(简体) ), `fullScreen`, (中文(简体) ), `formSheet`, (中文(简体) ), `popover`, (中文(简体) ), `overFullScreen`, (中文(简体) ), `overCurrentContext`默认为 `currentContext`。 。 。 . |
| 格式化 ASMp4 |  | 无 | 将所选视频转换为 MP4(仅iOS). |
| 资产代表模式 |  |  | 如果一个资产在iOS上包含一个以上,或者如果设置为"当前",则无法将HEIC/HEIF转换为Android上的JPEG,则决定使用哪种表示方式. 可能的值:"自动","当前","兼容". 默认为"自动" . |

|

## 响应对象

| 键 | iOS系统 | 机器人 | 说明 |
| --- | --- | --- | --- |
| 撤销 |  |  | `true` 如果用户取消了进程 |
| 错误代码 |  |  | 检查 [错误代码](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-ErrorCode) 用于所有错误代码 |
| 错误 |  |  | 描述错误, 只用于调试目的 |
| 资产 |  |  | 一组选定的媒体, [提及资产对象](https://npmcn.com/package/%40exodus/react-native-image-picker/#readme-Asset-Object) |

## 资产对象

| 键 | iOS系统 | 机器人 | 照片/录像 | 需要权限 | 说明 |
| --- | --- | --- | --- | --- | --- |
| 基础64 |  |  | 只有图片 | 无 | 图像的基数64 字符串( 只有相片) |
| 乌里 |  |  | 两个 | 无 | 应用程序特定缓存存储中的文件 uri 。 除了挑的时候 **来自Android画廊的视频** 您可以在其中只读取内容 uri, 以便在此情况下获取文件 uri 复制文件, 用任何反应本地库应用特定存储 . |
| 原始路径 | 无 |  | 两个 | 无 | 原始文件路径 . |
| 宽度 |  |  | 两个 | 无 | 资产方面 |
| 高度 |  |  | 两个 | 无 | 资产方面 |
| 文件大小 |  |  | 两个 | 无 | 文件大小 |
| 类型 |  |  | 两个 | 无 | 文件类型 |
| 文件Name |  |  | 两个 | 无 | 文件名称 |
| 会期 |  |  | 只有视频 | 无 | 选定的视频持续时间以秒计 |
| 位速率 | \-- -- . . |  | 只有视频 | 无 | 选定视频的平均比特率(以比特/秒计),如果有的话。 (仅限机器人) |
| 时间戳 |  |  | 两个 | 对 | 资产的时间戳。 仅在“ 包含Extra” 属实时才包含 |
| 编号 |  |  | 两个 | 对 | 照片或视频的本地标识符。 在 Android 上, 这与文件相同Name |

## 文件存储中的说明

通过相机捕获到的图像/视频会被存储在临时文件夹中,以便随时被删除,所以不要期望它会持续下去. 使用 `saveToPhotos: true` (默认为 `false`)在公相中保存文件. `saveToPhotos` 需求 `WRITE_EXTERNAL_STORAGE` android 28及以下的许可(由于库不处理此事项,该许可必须由App手动获得).

## 错误代码

| 代码 | 说明 |
| --- | --- |
| 相机类型( n) | 设备上没有相机 |
| 权限 | 权限未满足 |
| 其他人员 | 其他出错( 请检查出错 ) |

## 许可证

[麻省理工学院](https://npmcn.com/package/%40exodus/react-native-image-picker/LICENSE.md)

## 常见问题

### @exodus/react-native-image-picker 是什么？

允许您使用本地 UI 从设备库或直接从相机中选择媒体的 React 本地模块

### 如何安装 @exodus/react-native-image-picker？

在项目目录运行 npm install @exodus/react-native-image-picker，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（\*）、react-native（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @exodus/react-native-image-picker 支持 TypeScript 吗？

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

### @exodus/react-native-image-picker 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @exodus/react-native-image-picker 可以商用吗？

@exodus/react-native-image-picker 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @exodus/react-native-image-picker 的下载量有多少？

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

### @exodus/react-native-image-picker 还在维护吗？

最新版本 8\.2\.1-exodus-4 发布于 2026/01/07（10 个月前）；至今共发布 15 个版本，其中过去 12 个月发布了 1 个；首次发布于 2021/11/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

