Go to file
Marc Rousavy 12f850c8e1
feat: Draw onto Frame as if it was a Skia Canvas (#1479)
* Create Shaders.ts

* Add `previewType` and `enableFpsGraph`

* Add RN Skia native dependency

* Add Skia Preview View on iOS

* Pass 1

* Update FrameHostObject.mm

* Wrap Canvas

* Lockfiles

* fix: Fix stuff

* chore: Upgrade RNWorklets

* Add `previewType` to set the Preview

* feat: Add Example

* Update project.pbxproj

* `enableFpsGraph`

* Cache the `std::shared_ptr<FrameHostObject>`

* Update CameraView+RecordVideo.swift

* Update SkiaMetalCanvasProvider.mm

* Android: Integrate Skia Dependency

* fix: Use new Prefix

* Add example for rendering shader

* chore: Upgrade CameraX

* Remove KTX

* Enable `viewBinding`

* Revert "Enable `viewBinding`"

This reverts commit f2a603f53b33ea4311a296422ffd1a910ce03f9e.

* Revert "chore: Upgrade CameraX"

This reverts commit 8dc832cf8754490d31a6192e6c1a1f11cdcd94fe.

* Remove unneeded `ProcessCameraProvider.getInstance()` call

* fix: Add REA hotfix patch

* fix: Fix FrameHostObject dead in runAsync

* fix: Make `runAsync` run truly async by dropping new Frames while executing

* chore: Upgrade RN Worklets to latest

* chore: Upgrade RN Skia

* Revert "Remove KTX"

This reverts commit 253f586633f7af2da992d2279fc206dc62597129.

* Make Skia optional in CMake

* Fix import

* Update CMakeLists.txt

* Update build.gradle

* Update CameraView.kt

* Update CameraView.kt

* Update CameraView.kt

* Update Shaders.ts

* Center Blur

* chore: Upgrade RN Worklets

* feat: Add `toByteArray()`, `orientation`, `isMirrored` and `timestamp` to `Frame` (#1487)

* feat: Implement `orientation` and `isMirrored` on Frame

* feat: Add `toArrayBuffer()` func

* perf: Do faster buffer copy

* feat: Implement `toArrayBuffer()` on Android

* feat: Add `orientation` and `isMirrored` to Android

* feat: Add `timestamp` to Frame

* Update Frame.ts

* Update JImageProxy.h

* Update FrameHostObject.cpp

* Update FrameHostObject.cpp

* Update CameraPage.tsx

* fix: Format Swift
2023-02-21 15:00:48 +01:00
.github fix: Fix CI for V3 (#1475) 2023-02-15 17:24:33 +01:00
.vscode VSCode settings 2021-02-20 17:13:02 +01:00
android feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
cpp feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
docs feat: Sync Frame Processors (plus runAsync and runAtTargetFps) (#1472) 2023-02-15 16:47:09 +01:00
example feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
ios feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
scripts feat: Replace Reanimated with RN Worklets (#1468) 2023-02-13 15:22:45 +01:00
src feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
.eslintrc.js fix: Fix TypeScript relative imports (#358) 2021-08-16 10:45:41 +02:00
.gitignore feat: Add React Native 0.66 support (#490) 2021-10-05 12:22:14 +02:00
app.plugin.js feat: Expo support (#260) 2021-07-07 14:55:25 +02:00
CODE_OF_CONDUCT.md chore: Move to /mrousavy/ (#224) 2021-06-21 22:42:46 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md 2021-10-05 15:01:26 +02:00
LICENSE chore: Move to /mrousavy/ (#224) 2021-06-21 22:42:46 +02:00
package.json feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
README.md Add VisionCamera V3 link to README 2022-12-06 15:45:52 +01:00
temp-patch.sh feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
tsconfig.json fix: Fix TypeScript relative imports (#358) 2021-08-16 10:45:41 +02:00
VisionCamera.podspec feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00
yarn.lock feat: Draw onto Frame as if it was a Skia Canvas (#1479) 2023-02-21 15:00:48 +01:00

Vision Camera



📸 The Camera library that sees the vision.
npm i react-native-vision-camera
npx pod-install
Buy Me a Coffee at ko-fi.com



‼️‼️‼️‼️‼️ VisionCamera V3 ‼️‼️‼️‼️‼️

See this discussion for the latest upcoming version of VisionCamera

Documentation

Features

  • Photo, Video and Snapshot capture
  • Customizable devices and multi-cameras (smoothly zoom out to "fish-eye" camera)
  • Customizable FPS
  • Frame Processors (JS worklets to run QR-Code scanning, facial recognition, AI object detection, realtime video chats, ...)
  • Smooth zooming (Reanimated)
  • Fast pause and resume
  • HDR & Night modes

See the example app

Example

function App() {
  const devices = useCameraDevices('wide-angle-camera')
  const device = devices.back

  if (device == null) return <LoadingView />
  return (
    <Camera
      style={StyleSheet.absoluteFill}
      device={device}
      isActive={true}
    />
  )
}

Adopting at scale

This library helped you? Consider sponsoring!

VisionCamera is provided as is, I work on it in my free time.

If you're integrating VisionCamera in a production app, consider funding this project and contact me to receive premium enterprise support, help with issues, prioritize bugfixes, request features, help at integrating VisionCamera and/or Frame Processors, and more.


🚀 Get started by setting up permissions!