Skip to content

tony-xlh/vision-camera-cropper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6749125 · Sep 5, 2024

History

64 Commits
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Sep 4, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Sep 5, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Sep 4, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024
Aug 16, 2024

Repository files navigation

vision-camera-cropper

A react native vision camera frame processor for cropping

react-native-vision-camera-cropper.mp4

Versions

For Vision Camera v3, use versions 0.x.

For Vision Camera v4, use versions >= 1.0.0.

Installation

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.

Usage

  1. 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);
    }, []);
  2. Rotate an image.

    const rotated = await rotateImage(base64,degree);

Get Bitmap/UIImage via Reflection

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.

Blog

How to Create a React Native Vision Camera Plugin to Crop Frames

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with create-react-native-library