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小说写作助手,一站式润色、改写、扩写

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

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

问小白

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

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

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

Transly

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

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

讯飞智文

讯飞智文

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

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

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

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多