2016-05-18 10:07:36 +00:00
|
|
|
# react-native-image-crop-picker
|
|
|
|
iOS/Android image picker with support for multiple images and cropping
|
|
|
|
|
|
|
|
## Result
|
|
|
|
|
|
|
|
#### iOS
|
2016-07-27 00:30:48 +00:00
|
|
|
<img width=200 title="iOS Single Pick" src="https://github.com/ivpusic/react-native-image-crop-picker/blob/master/images/ios_single_pick.png">
|
|
|
|
<img width=200 title="iOS Crop" src="https://github.com/ivpusic/react-native-image-crop-picker/blob/master/images/ios_crop.png">
|
2016-05-18 10:07:36 +00:00
|
|
|
<img width=200 title="iOS Multiple Pick" src="https://github.com/ivpusic/react-native-image-crop-picker/blob/master/images/ios_multiple_pick.png">
|
|
|
|
|
|
|
|
#### Android
|
2016-07-27 00:30:48 +00:00
|
|
|
<img width=200 title="iOS Single Pick" src="https://github.com/ivpusic/react-native-image-crop-picker/blob/master/images/android_single_pick.png">
|
|
|
|
<img width=200 title="iOS Crop" src="https://github.com/ivpusic/react-native-image-crop-picker/blob/master/images/android_crop.png">
|
2016-05-18 10:07:36 +00:00
|
|
|
<img width=200 title="iOS Multiple Pick" src="https://github.com/ivpusic/react-native-image-crop-picker/blob/master/images/android_multiple.png">
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Import library
|
|
|
|
```javascript
|
|
|
|
import ImagePicker from 'react-native-image-crop-picker';
|
|
|
|
```
|
|
|
|
|
|
|
|
Call single image picker with cropping
|
|
|
|
```javascript
|
|
|
|
ImagePicker.openPicker({
|
|
|
|
width: 300,
|
|
|
|
height: 400,
|
|
|
|
cropping: true
|
|
|
|
}).then(image => {
|
|
|
|
console.log(image);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Call multiple image picker
|
|
|
|
```javascript
|
|
|
|
ImagePicker.openPicker({
|
|
|
|
multiple: true
|
|
|
|
}).then(images => {
|
|
|
|
console.log(images);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2016-08-05 18:57:10 +00:00
|
|
|
#### 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 |
|
|
|
|
|
2016-06-20 22:38:51 +00:00
|
|
|
#### 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 |
|
2016-08-09 08:27:22 +00:00
|
|
|
| data | base64 | Optional base64 selected file representation |
|
2016-06-20 22:38:51 +00:00
|
|
|
|
2016-05-18 10:07:36 +00:00
|
|
|
## 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'
|
|
|
|
```
|
|
|
|
|
2016-07-14 20:56:07 +00:00
|
|
|
[- Step By Step tutorial](https://github.com/ivpusic/react-native-image-crop-picker#ios-step-by-step-installation)
|
|
|
|
|
2016-05-18 10:07:36 +00:00
|
|
|
#### Android
|
|
|
|
```gradle
|
|
|
|
// 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')
|
|
|
|
```
|
|
|
|
```gradle
|
|
|
|
// file: android/app/build.gradle
|
|
|
|
...
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
...
|
|
|
|
compile project(':react-native-image-crop-picker')
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
```java
|
2016-07-27 00:30:48 +00:00
|
|
|
// file: MainApplication.java
|
2016-05-18 10:07:36 +00:00
|
|
|
...
|
|
|
|
|
|
|
|
import com.reactnative.picker.PickerPackage; // import package
|
|
|
|
|
2016-07-27 00:30:48 +00:00
|
|
|
public class MainApplication extends ReactApplication {
|
|
|
|
...
|
2016-05-18 10:07:36 +00:00
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
|
2016-07-14 20:52:37 +00:00
|
|
|
# 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 change `Podfile` to following
|
|
|
|
```
|
|
|
|
platform :ios, '8.0'
|
|
|
|
|
|
|
|
target 'picker' do
|
|
|
|
source 'https://github.com/CocoaPods/Specs.git'
|
2016-08-06 02:23:44 +00:00
|
|
|
pod 'React', :path => '../node_modules/react-native'
|
2016-07-14 20:52:37 +00:00
|
|
|
pod 'react-native-image-crop-picker', :path => '../node_modules/react-native-image-crop-picker/ios'
|
|
|
|
end
|
|
|
|
```
|
|
|
|
|
|
|
|
- Run
|
|
|
|
```
|
|
|
|
pod install
|
|
|
|
```
|
|
|
|
|
2016-08-04 14:58:22 +00:00
|
|
|
- open **project_name.xcworkspace**
|
|
|
|
- Add `$(inherited)` to other linker flags under Build Settings
|
2016-07-14 20:52:37 +00:00
|
|
|
|
|
|
|
Done!
|
|
|
|
|
2016-05-18 10:07:36 +00:00
|
|
|
## License
|
|
|
|
*MIT*
|