A react native vision camera frame processor for cropping
react-native-vision-camera-cropper.mp4
For Vision Camera v3, use versions 0.x.
For Vision Camera v4, use versions >= 1.0.0.
yarn add vision-camera-cropper
cd ios && pod install
Add the plugin to your babel.config.js
:
module.exports = {
plugins: [['react-native-worklets-core/plugin']],
// ...
Note: You have to restart metro-bundler for changes in the
babel.config.js
file to take effect.
-
Crop a frame and return its base64 or path.
import { crop } from 'vision-camera-cropper'; // ... const frameProcessor = useFrameProcessor((frame) => { 'worklet'; //coordinates in percentage const cropRegion = { left:10, top:10, width:80, height:30 } const result = crop(frame,{cropRegion:cropRegion,includeImageBase64:true,saveAsFile:false}); console.log(result.base64); }, []);
-
Rotate an image.
const rotated = await rotateImage(base64,degree);
If you are developing a plugin to get the camera frames, you can use reflection to get it as Bitmap or UIImage on the native side.
Java:
Class cls = Class.forName("com.visioncameracropper.CropperFrameProcessorPlugin");
Method m = cls.getMethod("getBitmap",null);
Bitmap bitmap = (Bitmap) m.invoke(null, null);
Objective-C:
- (UIImage*)getUIImage{
UIImage *image = ((UIImage* (*)(id, SEL))objc_msgSend)(objc_getClass("CropperFrameProcessorPlugin"), sel_registerName("getBitmap"));
return image;
}
You have to pass {saveBitmap: true}
for the crop
function.
How to Create a React Native Vision Camera Plugin to Crop Frames
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
Made with create-react-native-library