@exodus/ react-native-image-挑取者 @qq
一个反应原生模块,允许您从设备库或相机中选择相片/视频.
安装
yarn add @exodus/react-native-image-picker
新建筑
为了利用新建筑的运行
iOS系统
RCT_NEW_ARCH_ENABLED=1 npx pod-install ios
机器人
设定 newArchEnabled 改为 true 内部 android/gradle.properties
预配置( AKA 不使用新架构)
npx pod-install ios
安装后步骤
iOS系统
将合适的密钥添加到您的 Info.plist 根据您的要求:
| 所需经费 | 密钥 |
|---|---|
| 从相片中选择图像/视频 | NSPhoto 图书馆用户描述 |
| 抓取图像 | NSCameraUsage 描述 |
| 抓取视频 | NSCameraUsage 描述和NSMicrophone Usage 描述 |
机器人
无需权限( N)saveToPhotos 需要许可 检查) (中文(简体) ).
说明: 这个库不需要 Manifest.permission.CAMERA如果您的应用程序宣布使用此许可, 您必须在使用前获得许可 launchCamera。 。 。 .
针对Android API 级别低于 30
如果你的应用程序 minSdkVersion 它没有包括或取决于 androidx.activity:activity:1.9.+ 或更新版本,您需要将以下行添加到您的依赖部分 app/build.gradle 用于确保支持背出AndroidX Photo Picker的文件 :
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
API 参考
方法
import {
launchCamera,
launchImageLibrary,
} from '@exodus/react-native-image-picker';
launchCamera()
发射相机拍摄相片或视频.
launchCamera(options?, callback);
// You can also use as a promise without 'callback':
const result = await launchCamera(options?);
见 选项 详情请查阅 options。 。 。 .
这个 callback 将调用一个响应对象,参见 响应对象。 。 。 .
launchImageLibrary
发射画廊取出图像或视频.
launchImageLibrary(options?, callback)
// You can also use as a promise without 'callback':
const result = await launchImageLibrary(options?);
见 选项 详情请查阅 options。 。 。 .
这个 callback 将调用一个响应对象,参见 响应对象。 。 。 .
选项
| 选项 | 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 如果用户取消了进程 |
| 错误代码 | | | 检查 错误代码 用于所有错误代码 |
| 错误 | | | 描述错误, 只用于调试目的 |
| 资产 | | | 一组选定的媒体, 提及资产对象 |
资产对象
| 键 | iOS系统 | 机器人 | 照片/录像 | 需要权限 | 说明 |
|---|---|---|---|---|---|
| 基础64 | | | 只有图片 | 无 | 图像的基数64 字符串( 只有相片) |
| 乌里 | | | 两个 | 无 | 应用程序特定缓存存储中的文件 uri 。 除了挑的时候 来自Android画廊的视频 您可以在其中只读取内容 uri, 以便在此情况下获取文件 uri 复制文件, 用任何反应本地库应用特定存储 . |
| 原始路径 | 无 | | 两个 | 无 | 原始文件路径 . |
| 宽度 | | | 两个 | 无 | 资产方面 |
| 高度 | | | 两个 | 无 | 资产方面 |
| 文件大小 | | | 两个 | 无 | 文件大小 |
| 类型 | | | 两个 | 无 | 文件类型 |
| 文件Name | | | 两个 | 无 | 文件名称 |
| 会期 | | | 只有视频 | 无 | 选定的视频持续时间以秒计 |
| 位速率 | -- -- . . | | 只有视频 | 无 | 选定视频的平均比特率(以比特/秒计),如果有的话。 (仅限机器人) |
| 时间戳 | | | 两个 | 对 | 资产的时间戳。 仅在“ 包含Extra” 属实时才包含 |
| 编号 | | | 两个 | 对 | 照片或视频的本地标识符。 在 Android 上, 这与文件相同Name |
文件存储中的说明
通过相机捕获到的图像/视频会被存储在临时文件夹中,以便随时被删除,所以不要期望它会持续下去. 使用 saveToPhotos: true (默认为 false)在公相中保存文件. saveToPhotos 需求 WRITE_EXTERNAL_STORAGE android 28及以下的许可(由于库不处理此事项,该许可必须由App手动获得).
错误代码
| 代码 | 说明 |
|---|---|
| 相机类型( n) | 设备上没有相机 |
| 权限 | 权限未满足 |
| 其他人员 | 其他出错( 请检查出错 ) |