diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e709e0b --- /dev/null +++ b/.npmignore @@ -0,0 +1,21 @@ +demo/ +.idea/ +support/ +*.tar +*.tgz +.npmignore +*.map +*.ts +tsconfig.json +scripts +.DS_Store +*.aar +node_modules +*.esm.json +!extractTGZ.js +*.js.map +*.log + +# Editor directories and files +.idea +.vscode diff --git a/README.md b/README.md new file mode 100644 index 0000000..9c793ad --- /dev/null +++ b/README.md @@ -0,0 +1,211 @@ +[](https://cyberlabs.ai/) + +# NativeScript Yoonit Camera + +![NativeScript](https://img.shields.io/badge/NativeScript-7-lightgrey.svg?style=for-the-badge&logo=nativescript) ![Version](https://img.shields.io/npm/v/@yoonit/nativescript-camera?color=lightgrey&style=for-the-badge&logo=npm) ![Downloads](https://img.shields.io/npm/dm/@yoonit/nativescript-camera?color=lightgrey&logo=npm&style=for-the-badge) + +![Android](https://img.shields.io/badge/Android-YES-lightgrey.svg?style=for-the-badge&logo=android) ![iOS](https://img.shields.io/badge/iOS-YES-lightgrey.svg?style=for-the-badge&logo=apple) ![MIT license](https://img.shields.io/npm/l/@yoonit/nativescript-camera?color=lightgrey&style=for-the-badge) + +A NativeScript plugin to provide: +- Modern Android Camera API (Camera X) +- MLKit integration +- Camera preview (Front & Back) +- Face detection (With Min & Max size) +- Landmark detection (Soon) +- Face crop +- Face capture +- Frame capture +- Face ROI (Soon) +- QR Code scanning + +## Installation + +```javascript +npm i -s @yoonit/nativescript-camera +``` + +## Usage + +All the functionalities that the `@yoonit/nativescript-camera` provides is accessed through the `YoonitCamera` component, that includes the camera preview. Below we have the basic usage code, for more details, your can see the [**Methods**](#methods), [**Events**](#events) or the [**Demo Vue**](https://github.com/Yoonit-Labs/nativescript-yoonit-camera/tree/development/demo-vue). + + +#### VueJS Plugin +`main.js` +```javascript +import Vue from 'nativescript-vue' +import YoonitCamera from '@yoonit/nativescript-camera/vue' + +Vue.use(YoonitCamera) +``` + +After that, you can access the camera object in your entire project using `this.$yoo.camera` + +#### Vue Component +`App.vue` +```vue + + + +``` + +## API + +#### Methods + +| Function | Parameters | Valid values | Return Type | Description +| - | - | - | - | - +| **`requestPermission`** | - | - | promise | Ask to user to give the permission to access camera. +| **`hasPermission`** | - | - | boolean | Return if application has camera permission. +| **`preview`** | - | - | void | Start camera preview if has permission. +| **`startCapture`** | `captureType: string` | | void | Set capture type none, face, barcode or frame. +| **`stopCapture`** | - | - | void | Stop any type of capture. +| **`toggleLens`** | - | - | void | Set camera lens facing front or back. +| **`getLens`** | - | - | number | Return `number` that represents lens face state: 0 for front 1 for back camera. +| **`setFaceNumberOfImages`** | `faceNumberOfImages: number` | Any positive `number` value | void | Default value is 0. For value 0 is saved infinity images. When saved images reached the "face number os images", the `onEndCapture` is triggered. +| **`setFaceDetectionBox`** | `faceDetectionBox: boolean` | `true` or `false` | void | Set to show face detection box when face detected. +| **`setFaceTimeBetweenImages`** | `faceTimeBetweenImages: number` | Any positive `number` that represent time in milli seconds | void | Set saving face images time interval in milli seconds. +| **`setFacePaddingPercent`** | `facePaddingPercent: number` | Any positive `number` value | void | Set face image and bounding box padding in percent. +| **`setFaceImageSize`** | `faceImageSize: number` | Any positive `number` value | void | Set face image size to be saved. +| **`setFaceCaptureMinSize`** | `faceCaptureMinSize: Float` | Value between `0` and `1`. Represents the percentage. | void | Set the minimum face capture related by percentage with the screen width. +| **`setFaceCaptureMaxSize`** | `faceCaptureMaxSize: Float` | Value between `0` and `1`. Represents the percentage. | void | Set the maximum face capture related by percentage with the screen width. +| **`setFrameNumberOfImages`** | `frameNumberOfImages: number` | Any positive `number` value | void | Default value is 0. For value 0 is saved infinity images. When saved images reached the "frame number os images", the `onEndCapture` is triggered. +| **`setFrameTimeBetweenImages`** | `frameTimeBetweenImages: number` | Any positive `number` that represent time in milli seconds | void | Set saving frame images time interval in milli seconds. + + +#### Events + +| Event | Parameters | Description +| - | - | - +| faceImage | `{ count: number, total: number, image: object = { path: string, source: blob } }` | Must have started capture type of face. Emitted when the face image file is created: