react-native-image-crop-picker

react-native-image-crop-picker

React Native图像选择与处理库 支持iOS和Android平台

react-native-image-crop-picker是一个功能丰富的React Native图像处理库。支持从相册和相机选择图片和视频,提供压缩、裁剪、多选等功能。适用于iOS和Android平台,可高度定制,并提供详细文档便于集成。

React Native图片选择器图片裁剪多平台开源项目Github

react-native-image-crop-picker

Open Collective上的支持者 Open Collective上的赞助商

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/fb945bd0-9e14-42ff-a645-c85ac13aef26.svg" width="50%" height="50%" />

iOS/Android图片选择器,支持相机、视频、可配置压缩、多图选择和裁剪功能

效果

<p align="left"> <img width=200 title="iOS单选" src="https://yellow-cdn.veclightyear.com/0a4dffa0/7d7d091d-759d-4b32-8211-d6c16a41a404.png"> <img width=200 title="iOS多选" src="https://yellow-cdn.veclightyear.com/0a4dffa0/d2bd5944-43d7-401f-ab1d-b1f9faa474d1.png"> <img width=200 title="iOS普通裁剪" src="https://yellow-cdn.veclightyear.com/0a4dffa0/24b5145f-b95a-4b27-b968-7d9562295f25.png"> <img width=200 title="iOS圆形裁剪" src="https://yellow-cdn.veclightyear.com/0a4dffa0/2bc22d2d-766f-420e-85a3-0f861ee729ee.png"> </p>

重要说明

  1. 如果您使用的是react-native >= 0.60版本,请使用react-native-image-crop-picker 0.25.0或更高版本。否则请使用0.25.0以下版本。
  2. 如果您想使用react-native-image-crop-picker 0.39.0或更高版本,您需要将Android的compileSdkVersion设置为33或更高。否则请使用react-native-image-crop-picker 0.39.0以下版本。

使用方法

导入库

import ImagePicker from 'react-native-image-crop-picker';

从图库选择

调用单图选择器并裁剪

ImagePicker.openPicker({ width: 300, height: 400, cropping: true }).then(image => { console.log(image); });

调用多图选择器

ImagePicker.openPicker({ multiple: true }).then(images => { console.log(images); });

仅从图库选择视频

ImagePicker.openPicker({ mediaType: "video", }).then((video) => { console.log(video); });

Android:已知'cropping'属性可能导致在Android的图库中无法显示视频。选择视频时请不要将cropping设置为true。

从相机选择

图片

ImagePicker.openCamera({ width: 300, height: 400, cropping: true, }).then(image => { console.log(image); });

视频

ImagePicker.openCamera({ mediaType: 'video', }).then(image => { console.log(image); });

裁剪图片

ImagePicker.openCropper({ path: 'my-file-path.jpg', width: 300, height: 400 }).then(image => { console.log(image); });

可选的清理操作

模块会创建临时图片,这些图片将在未来某个时候自动清理。如果您想强制清理,可以使用clean来清理所有临时文件,或使用cleanSingle(path)来清理单个临时文件。

ImagePicker.clean().then(() => { console.log('已从临时目录中删除所有临时图片'); }).catch(e => { alert(e); });

请求对象

属性类型描述
cropping布尔值(默认为false)启用或禁用裁剪
width数字cropping选项一起使用时的结果图像宽度
height数字cropping选项一起使用时的结果图像高度
multiple布尔值(默认为false)启用或禁用多图像选择
writeTempFile(仅iOS)布尔值(默认为true)设置为false时,不为选定的图像写入临时文件。当使用includeBase64选项检索文件内容且不需要从磁盘读取文件时,这对提高性能很有用。
includeBase64布尔值(默认为false)设置为true时,图像文件内容将作为base64编码的字符串在data属性中可用。提示:要将此字符串用作图像源,可以这样使用:<Image source={{uri: `data:${image.mime};base64,${image.data}`}} />
includeExif布尔值(默认为false)在响应中包含图像的Exif数据
avoidEmptySpaceAroundImage(仅iOS)布尔值(默认为true)设置为true时,图像将始终填满遮罩空间。
cropperActiveWidgetColor(仅Android)字符串(默认为"#424242"裁剪图像时,确定活动小部件的颜色。
cropperStatusBarColor(仅Android)字符串(默认为#424242裁剪图像时,确定状态栏的颜色。
cropperToolbarColor(仅Android)字符串(默认为#424242裁剪图像时,确定工具栏的颜色。
cropperToolbarWidgetColor(仅Android)字符串(默认为darker orange裁剪图像时,确定工具栏文本和按钮的颜色。
freeStyleCropEnabled布尔值(默认为false)允许用户应用自定义矩形区域进行裁剪
cropperToolbarTitle字符串(默认为Edit Photo裁剪图像时,确定工具栏的标题。
cropperCircleOverlay布尔值(默认为false)启用或禁用圆形裁剪遮罩。
disableCropperColorSetters(仅Android)布尔值(默认为false)裁剪图像时,禁用裁剪库的颜色设置器。
minFiles(仅iOS)数字(默认为1)使用multiple选项时要选择的最小文件数
maxFiles(仅iOS)数字(默认为5)使用multiple选项时要选择的最大文件数
waitAnimationEnd(仅iOS)布尔值(默认为true)Promise将在ViewController completion块被调用时解决/拒绝
smartAlbums(仅iOS)数组(支持的值)(默认为['UserLibrary', 'PhotoStream', 'Panoramas', 'Videos', 'Bursts'])可选择的智能相册列表
useFrontCamera布尔值(默认为false)打开时是否默认使用前置/"自拍"相机。请注意,并非所有Android设备都支持此参数,详见问题#1058
compressVideoPreset(仅iOS)字符串(默认为MediumQuality)选择用于视频压缩的预设
compressImageMaxWidth数字(默认无)压缩图像的最大宽度
compressImageMaxHeight数字(默认无)压缩图像的最大高度
compressImageQuality数字(默认Android为1/iOS为0.8)压缩图像的质量(从0到1,1为最佳质量)。在iOS上,大于0.8的值在大多数图像中不会产生明显的质量提升,而0.8的值与1相比,文件大小将减少约一半或更少。
loadingLabelText(仅iOS)字符串(默认为"Processing assets...")图片在选择器中加载时显示的文本
mediaType字符串(默认为any)图像选择接受的媒体类型,可以是:'photo'、'video'或'any'
showsSelectedCount(仅iOS)布尔值(默认为true)是否显示选定资产的数量
sortOrder(仅iOS)字符串(默认为'none',支持的值:'asc'、'desc'、'none')打开图像选择器时,在相册/详细照片视图中显示媒体时应用于创建日期的排序顺序
forceJpg(仅iOS)布尔值(默认为false)是否将照片转换为JPG。这也会将任何实况照片转换为其JPG表示形式
showCropGuidelines(仅Android)布尔值(默认为true)裁剪时是否在图像上方显示3x3网格
showCropFrame(仅Android)布尔值(默认为true)裁剪时是否显示裁剪框
hideBottomControls(仅Android)布尔值(默认为false)是否显示底部控件
enableRotationGesture(仅Android)布尔值(默认为false)是否启用手势旋转图像
cropperChooseText(仅iOS)字符串(默认为choose)选择按钮文本
cropperChooseColor(仅iOS)字符串(默认为#FFCC00选择按钮的十六进制格式颜色。默认颜色由TOCropViewController控制
cropperCancelText(仅iOS)字符串(默认为Cancel)取消按钮文本
cropperCancelColor(仅iOS)字符串(默认为iOS的默认色调)取消按钮的十六进制格式颜色。默认值是iOS的默认色调颜色由TOCropViewController控制
cropperRotateButtonsHidden(仅iOS)布尔值(默认为false)启用或禁用裁剪器旋转按钮

智能相册类型(iOS)

注意:某些类型可能在所有iOS版本上都不可用。请务必检查以避免问题。

['PhotoStream', 'Generic', 'Panoramas', 'Videos', 'Favorites', 'Timelapses', 'AllHidden', 'RecentlyAdded', 'Bursts', 'SlomoVideos', 'UserLibrary', 'SelfPortraits', 'Screenshots', 'DepthEffect', 'LivePhotos', 'Animated', 'LongExposure']

响应对象

属性类型描述
path字符串选中图片的位置。当writeTempFile选项设置为false时,此值为null。
localIdentifier(仅iOS)字符串选中图片的本地标识符,用于PHAsset搜索
sourceURL(仅iOS)字符串选中图片的源路径,无写入权限
filename(仅iOS)字符串选中图片的文件名
width数字选中图片的宽度
height数字选中图片的高度
mime字符串选中图片的MIME类型(image/jpeg, image/png)
size数字选中图片的大小(字节)
duration数字视频时长(毫秒)
database64可选的base64编码选中文件表示
exif对象从图片中提取的EXIF数据。响应格式取决于平台
cropRect对象裁剪后的图片矩形(宽度、高度、x、y)
creationDate (仅iOS)字符串图片创建时的UNIX时间戳
modificationDate字符串图片最后修改时的UNIX时间戳

安装

步骤1

npm i react-native-image-crop-picker --save

步骤2

iOS

cd ios pod install

步骤3

iOS

步骤1

在Xcode中打开Info.plist,添加字符串键NSPhotoLibraryUsageDescription,其值描述为什么需要访问用户照片。更多信息请参见https://forums.developer.apple.com/thread/62229。根据您使用的功能,您可能还需要`NSCameraUsageDescription`和`NSMicrophoneUsageDescription`键。

(可选)步骤2 - 本地化相机/图库/裁剪器文本按钮

  • 打开您的Xcode项目
  • 通过在导航栏(左侧)打开项目名称进入项目设置
  • 在项目列表中选择您的项目
  • 应该在Info选项卡中,通过"+"添加Localizations中您的应用缺少的语言
  • 重新构建,现在您的应用相机和图库应该有您添加的语言的经典iOS文本。

Android

  • 非常重要build.gradle的repositories部分添加以下内容,并将Android SDK版本更改为33。(android/build.gradle)
buildscript { ext { buildToolsVersion = "31.0.0" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 ... } } allprojects { repositories { mavenLocal() jcenter() maven { url "$rootDir/../node_modules/react-native/android" } // 添加这个 maven { url 'https://maven.google.com' } // 添加这个 maven { url "https://www.jitpack.io" } } }
  • 添加useSupportLibrary (android/app/build.gradle)
android { ... defaultConfig { ... vectorDrawables.useSupportLibrary = true ... } ... }
  • 如果您使用的react-native-image-crop-picker版本 >= 0.35.0,最低Gradle版本要求
3.3.3
3.4.3
3.5.4
3.6.4
4.0.1

更多详细信息请参考 https://github.com/ivpusic/react-native-image-crop-picker/issues/1406

  • 如果您使用的SDK版本 >= 33,在app/src/main/AndroidManifest.xml中添加以下内容

    • <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
  • [可选] 如果您想在项目中使用相机选择器,在app/src/main/AndroidManifest.xml中添加以下内容

    • <uses-permission android:name="android.permission.CAMERA"/>
  • [可选] 如果您想使用前置摄像头,还需在app/src/main/AndroidManifest.xml中添加以下内容

    • <uses-feature android:name="android.hardware.camera" android:required="false" />
    • <uses-feature android:name="android.hardware.camera.front" android:required="false" />

待办事项

  • [Android] 标准化多选
  • [Android] 视频压缩

贡献者

本项目的存在要感谢所有做出贡献的人。[参与贡献] <a href="graphs/contributors"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/2a421353-e726-4fa9-8b26-4db24bea96f8.svg?width=890" /></a>

支持者

感谢所有的支持者!🙏 [成为支持者]

<a href="https://opencollective.com/react-native-image-crop-picker#backers" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/cf8891ed-b449-4ec6-9921-65316a6a8d64.svg?width=890"></a>

赞助商

通过成为赞助商来支持这个项目。您的logo将会显示在这里,并链接到您的网站。[成为赞助商] <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/0/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/88ee8c9f-a5df-42c2-a33b-686b8b82e757.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/1/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/eac20d23-a8e8-46f0-b1df-7edbc3fcae98.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/2/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/2a146995-59e3-48e4-b2cb-1ac03c5d791f.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/3/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d686c321-b824-428a-8aa2-23f233a82b82.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/4/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/304d9f42-9f7f-445d-9350-828ec0ae3dc9.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/5/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/efbd6fde-e064-4948-948e-1af1803e3ddb.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/6/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/19569e50-25a5-40e3-9a1f-541a6e2ee722.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/7/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/fc6195ba-8219-4824-9254-2f19714e21bb.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/8/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/ebd9a620-7d07-4dfa-bb3a-f3a7d92869ac.svg"></a> <a href="https://opencollective.com/react-native-image-crop-picker/sponsor/9/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/ca75c12e-5a47-487f-b14c-48a001964fb6.svg"></a>

许可证

MIT

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多