Gathering detailed insights and metrics for rn-image-crop-picker
Gathering detailed insights and metrics for rn-image-crop-picker
Gathering detailed insights and metrics for rn-image-crop-picker
Gathering detailed insights and metrics for rn-image-crop-picker
with-rn-image-crop-picker
An Expo config plugin for painless setup of `react-native-image-crop-picker`
@serjpas/with-rn-image-crop-picker
An Expo config plugin for painless setup of `react-native-image-crop-picker` (fork from https://github.com/mwegener-com/with-rn-image-crop-picker)
@luccasr73/with-rn-image-crop-picker
An Expo config plugin for painless setup of `react-native-image-crop-picker`
@hchc/rn-image-crop-picker
Select single or multiple images, with cropping option
npm install rn-image-crop-picker
Typescript
Module System
Node Version
NPM Version
C++ (82.94%)
Java (9.6%)
Objective-C (7.37%)
Ruby (0.05%)
Makefile (0.04%)
Total Downloads
0
Last Day
0
Last Week
0
Last Month
0
Last Year
0
MIT License
16 Commits
1 Watchers
1 Branches
1 Contributors
Updated on Feb 12, 2020
Latest Version
0.26.4
Package Id
rn-image-crop-picker@0.26.4
Unpacked Size
12.12 MB
Size
5.26 MB
File Count
326
NPM Version
6.13.4
Node Version
13.6.0
Cumulative downloads
Total Downloads
Last Day
0%
NaN
Compared to previous day
Last Week
0%
NaN
Compared to previous week
Last Month
0%
NaN
Compared to previous month
Last Year
0%
NaN
Compared to previous year
1
If you are using react-native >= 0.60 use rn-image-crop-picker version >= 0.25.0. Otherwise use version < 0.25.0.
##INSTALLATION
yarn add rn-image-crop-picker
Import library
1import ImagePicker from "rn-image-crop-picker";
Call single image picker with cropping
1ImagePicker.openPicker({ 2 width: 300, 3 height: 400, 4 cropping: true 5}).then(image => { 6 console.log(image); 7});
Call multiple image picker
1ImagePicker.openPicker({ 2 multiple: true 3}).then(images => { 4 console.log(images); 5});
Select video only from gallery
1ImagePicker.openPicker({ 2 mediaType: "video" 3}).then(video => { 4 console.log(video); 5});
Android: The prop 'cropping' has been known to cause videos not to be display in the gallery on Android. Please do not set cropping to true when selecting videos.
1ImagePicker.openCamera({ 2 width: 300, 3 height: 400, 4 cropping: true 5}).then(image => { 6 console.log(image); 7});
1ImagePicker.openCamera({ 2 mediaType: "video" 3}).then(image => { 4 console.log(image); 5});
1ImagePicker.openCropper({ 2 path: "my-file-path.jpg", 3 width: 300, 4 height: 400 5}).then(image => { 6 console.log(image); 7});
Module is creating tmp images which are going to be cleaned up automatically somewhere in the future. If you want to force cleanup, you can use clean
to clean all tmp files, or cleanSingle(path)
to clean single tmp file.
1ImagePicker.clean() 2 .then(() => { 3 console.log("removed all tmp images from tmp directory"); 4 }) 5 .catch(e => { 6 alert(e); 7 });
Property | Type | Description |
---|---|---|
cropping | bool (default false) | Enable or disable cropping |
width | number | Width of result image when used with cropping option |
height | number | Height of result image when used with cropping option |
multiple | bool (default false) | Enable or disable multiple image selection |
writeTempFile (ios only) | bool (default true) | When set to false, does not write temporary files for the selected images. This is useful to improve performance when you are retrieving file contents with the includeBase64 option and don't need to read files from disk. |
includeBase64 | bool (default false) | When set to true, the image file content will be available as a base64-encoded string in the data property. Hint: To use this string as an image source, use it like: <Image source={{uri: `data:${image.mime};base64,${image.data}`}} /> |
includeExif | bool (default false) | Include image exif data in the response |
avoidEmptySpaceAroundImage | bool (default true) | When set to true, the image will always fill the mask space. |
cropperActiveWidgetColor (android only) | string (default "#424242" ) | When cropping image, determines ActiveWidget color. |
cropperStatusBarColor (android only) | string (default #424242 ) | When cropping image, determines the color of StatusBar. |
cropperToolbarColor (android only) | string (default #424242 ) | When cropping image, determines the color of Toolbar. |
freeStyleCropEnabled (android only) | bool (default false) | Enables user to apply custom rectangle area for cropping |
cropperToolbarTitle | string (default Edit Photo ) | When cropping image, determines the title of Toolbar. |
cropperCircleOverlay | bool (default false) | Enable or disable circular cropping mask. |
disableCropperColorSetters (android only) | bool (default false) | When cropping image, disables the color setters for cropping library. |
minFiles (ios only) | number (default 1) | Min number of files to select when using multiple option |
maxFiles (ios only) | number (default 5) | Max number of files to select when using multiple option |
waitAnimationEnd (ios only) | bool (default true) | Promise will resolve/reject once ViewController completion block is called |
smartAlbums (ios only) | array (supported values) (default ['UserLibrary', 'PhotoStream', 'Panoramas', 'Videos', 'Bursts']) | List of smart albums to choose from |
useFrontCamera | bool (default false) | Whether to default to the front/'selfie' camera when opened. Please note that not all Android devices handle this parameter, see issue #1058 |
compressVideoPreset (ios only) | string (default MediumQuality) | Choose which preset will be used for video compression |
compressImageMaxWidth | number (default none) | Compress image with maximum width |
compressImageMaxHeight | number (default none) | Compress image with maximum height |
compressImageQuality | number (default 1 (Android)/0.8 (iOS)) | Compress image with quality (from 0 to 1, where 1 is best quality). On iOS, values larger than 0.8 don't produce a noticable quality increase in most images, while a value of 0.8 will reduce the file size by about half or less compared to a value of 1. |
loadingLabelText (ios only) | string (default "Processing assets...") | Text displayed while photo is loading in picker |
mediaType | string (default any) | Accepted mediaType for image selection, can be one of: 'photo', 'video', or 'any' |
showsSelectedCount (ios only) | bool (default true) | Whether to show the number of selected assets |
forceJpg (ios only) | bool (default false) | Whether to convert photos to JPG. This will also convert any Live Photo into its JPG representation |
showCropGuidelines (android only) | bool (default true) | Whether to show the 3x3 grid on top of the image during cropping |
showCropFrame (android only) | bool (default true) | Whether to show crop frame during cropping |
hideBottomControls (android only) | bool (default false) | Whether to display bottom controls |
enableRotationGesture (android only) | bool (default false) | Whether to enable rotating the image by hand gesture |
cropperChooseText (ios only) | string (default choose) | Choose button text |
cropperCancelText (ios only) | string (default Cancel) | Cancel button text |
['PhotoStream', 'Generic', 'Panoramas', 'Videos', 'Favorites', 'Timelapses', 'AllHidden', 'RecentlyAdded', 'Bursts', 'SlomoVideos', 'UserLibrary', 'SelfPortraits', 'Screenshots', 'DepthEffect', 'LivePhotos', 'Animated', 'LongExposure']
Property | Type | Description |
---|---|---|
path | string | Selected image location. This is null when the writeTempFile option is set to false. |
localIdentifier(ios only) | string | Selected images' localidentifier, used for PHAsset searching |
sourceURL(ios only) | string | Selected images' source path, do not have write access |
filename(ios only) | string | Selected images' filename |
width | number | Selected image width |
height | number | Selected image height |
mime | string | Selected image MIME type (image/jpeg, image/png) |
size | number | Selected image size in bytes |
data | base64 | Optional base64 selected file representation |
exif | object | Extracted exif data from image. Response format is platform specific |
cropRect | object | Cropped image rectangle (width, height, x, y) |
creationDate (ios only) | string | UNIX timestamp when image was created |
modificationDate | string | UNIX timestamp when image was last modified |
1npm i rn-image-crop-picker --save
1cd ios 2pod install
After this use ios/<project_name>.xcworkspace
. Do not use ios/<project_name>.xcodeproj
.
It is recommended to use locally provided QBImagePicker pod, because it contains few improvements over original version.
pod 'QBImagePickerController', :path => '../node_modules/rn-image-crop-picker/ios/QBImagePicker/QBImagePickerController.podspec'
1react-native link rn-image-crop-picker
NOTE: If you are using react-native >= 0.60 autolinking, you can skip this step.
1react-native link rn-image-crop-picker
In Xcode open Info.plist and add string key NSPhotoLibraryUsageDescription
with value that describes why you need access to user photos. More info here https://forums.developer.apple.com/thread/62229. Depending on what features you use, you also may need NSCameraUsageDescription
and NSMicrophoneUsageDescription
keys.
Click on project General tab
Deployment Info
set Deployment Target
to 8.0
Embedded Binaries
click +
and add RSKImageCropper.framework
and QBImagePicker.framework
2.2.x
(android/build.gradle)1buildscript { 2 ... 3 dependencies { 4 classpath 'com.android.tools.build:gradle:2.2.3' 5 ... 6 } 7 ... 8}
build.gradle
's repositories section. (android/build.gradle)1allprojects { 2 repositories { 3 mavenLocal() 4 jcenter() 5 maven { url "$rootDir/../node_modules/react-native/android" } 6 7 // ADD THIS 8 maven { url 'https://maven.google.com' } 9 10 // ADD THIS 11 maven { url "https://www.jitpack.io" } 12 } 13}
useSupportLibrary
(android/app/build.gradle)1android { 2 ... 3 4 defaultConfig { 5 ... 6 vectorDrawables.useSupportLibrary = true 7 ... 8 } 9 ... 10}
1android { 2 compileSdkVersion 27 3 buildToolsVersion "27.0.3" 4 ... 5 6 defaultConfig { 7 ... 8 targetSdkVersion 27 9 ... 10 } 11 ... 12}
[Optional] If you want to use camera picker in your project, add following to app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA"/>
[Optional] If you want to use front camera, also add following to 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" />
If you are using pre-built frameworks from ios/ImageCropPickerSDK
, then before deploying app to production you should strip off simulator ARCHs from these, or you can add frameworks from Libraries/imageCropPicker/Libraries/_framework_name_.xcodeproj/Products/_framework_name_.framework
to Embedded Binaries instead of pre-built ones.
Related issue: https://github.com/ivpusic/react-native-image-crop-picker/issues/61.
Details for second approach:
Embedded Binaries
Embedded Binaries
(located at Libraries/imageCropPicker/Libraries/_framework_name_.xcodeproj/Products/_framework_name_.framework
)This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
MIT
No vulnerabilities found.
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
Reason
binaries present in source code
Details
Reason
Found 0/16 approved changesets -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no SAST tool detected
Details
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
branch protection not enabled on development/release branches
Details
Score
Last Scanned on 2025-07-14
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More