mirror of
https://github.com/status-im/react-native-image-crop-picker.git
synced 2025-02-23 10:58:16 +00:00
react-native-image-crop-picker
iOS/Android image picker with support for multiple images and cropping
Result
iOS



Android



Usage
Import library
import ImagePicker from 'react-native-image-crop-picker';
Call single image picker with cropping
ImagePicker.openPicker({
width: 300,
height: 400,
cropping: true
}).then(image => {
console.log(image);
});
Call multiple image picker
ImagePicker.openPicker({
multiple: true
}).then(images => {
console.log(images);
});
Request Object
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 |
includeBase64 | bool (default false) | Enable or disable returning base64 data with image |
maxFiles (ios only) | number (default 5) | Max number of files to select when using multiple option |
Response Object
Property | Type | Description |
---|---|---|
path | string | Selected image location |
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 |
Install
npm install react-native-image-crop-picker --save
iOS
pod 'react-native-image-crop-picker', :path => '../node_modules/react-native-image-crop-picker/ios'
Android
// file: android/settings.gradle
...
include ':react-native-image-crop-picker'
project(':react-native-image-crop-picker').projectDir = new File(settingsDir, '../node_modules/react-native-image-crop-picker/android')
// file: android/app/build.gradle
...
dependencies {
...
compile project(':react-native-image-crop-picker')
}
// file: MainApplication.java
...
import com.reactnative.picker.PickerPackage; // import package
public class MainApplication extends ReactApplication {
...
/**
* A list of packages used by the app. If the app uses additional views
* or modules besides the default ones, add more packages here.
*/
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new PickerPackage() // Add package
);
}
...
}
How it works?
It is basically wrapper around few libraries
Android
- Native Image Picker
- uCrop
iOS
- QBImagePickerController
- RSKImageCropper
iOS Step by Step installation
- Create new react native project with Pods support
react-native init picker
cd picker
npm i react-native-image-crop-picker --save
cd ios
pod init
- Inside
ios
directory changePodfile
to following
platform :ios, '8.0'
target 'picker' do
source 'https://github.com/CocoaPods/Specs.git'
pod 'React', :subspecs => ['Core', 'RCTImage', 'RCTNetwork', 'RCTText', 'RCTWebSocket'], :path => '../node_modules/react-native'
pod 'react-native-image-crop-picker', :path => '../node_modules/react-native-image-crop-picker/ios'
end
- Run
pod install
- open project_name.xcworkspace
- Add
$(inherited)
to other linker flags under Build Settings - Remove all RCT* and React under Libraries (because you defined them via Podfile), or keep them inside Libraries but remove them from Podfile, otherwise you will get "duplicated symbols..." compile error
Done!
License
MIT
Languages
Objective-C
64%
Java
29.5%
JavaScript
4.4%
Ruby
1.3%
Starlark
0.8%