$ yarn add react-native-image-crop-tools
Only RN > 0.61.x is supported.
- Android: Installation is automatic.
- iOS: Add
pod 'react-native-image-crop-tools', :path => '../node_modules/react-native-image-crop-tools'
in your podfile below the lineuse_native_modules!
. Then runpod install
in iOS folder.
Most cropping tools available for RN are usually wrappers over popular native tools which itself isn't a bad thing. But this means you are stuck with their UI and feature set. The ones made in RN are not the most optimized and correct tools.
- Native views. Which means performance even on low end devices.
- You can embed the view into you own UI. It's not very customizable (yet)
- Change and lock/unlock aspect ratio on the fly (This is the main reason I am making this library)
This library is not supposed to work with local images. There are very few usecases for that. You need to provide a sourceUrl string which you can obtain from image pickers or downloading using rn-fetch-blob
import { CropView } from 'react-native-image-crop-tools';
<CropView
sourceUrl={uri}
style={styles.cropView}
ref={cropViewRef}
onImageCrop={(res) => console.warn(res)}
keepAspectRatio
aspectRatio={{width: 16, height: 9}}
/>
Two methods are exposed on the ref you can use them as follows
this.cropViewRef.saveImage(true, 90 // image quality percentage)
this.cropViewRef.rotateImage(true // true for clockwise, false for counterclockwise)
Name | Description | Default |
---|---|---|
sourceUrl | URL of the source image | null |
aspectRatio | Aspect ratio of the cropped image | null |
keepAspectRatio | Locks the aspect ratio to given aspect ratio | false |
iosDimensionSwapEnabled | (iOS Only) Swaps the width and height of the crop rectangle upon rotation | false |
- Add screenshots
- Support transparency
- Add access to prebuilt UI for those who want to use it.