mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2026-04-13 00:00:10 +08:00
116 lines
3.3 KiB
TypeScript
116 lines
3.3 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { Plugin, Cordova, AwesomeCordovaNativePlugin } from '@awesome-cordova-plugins/core';
|
|
import { Observable } from 'rxjs';
|
|
|
|
export enum FirebaseModelStatus {
|
|
downloading = 'downloading',
|
|
completed = 'completed',
|
|
}
|
|
|
|
export enum FirebaseModelInputType {
|
|
path = 'path',
|
|
base64string = 'base64string',
|
|
blob = 'blob',
|
|
}
|
|
|
|
export class FirebaseModelConfigResult {
|
|
/**
|
|
* Returns the current status of the model.
|
|
*/
|
|
status: FirebaseModelStatus;
|
|
/**
|
|
* Returns the current progress of the downloading model.
|
|
*/
|
|
progress: number;
|
|
}
|
|
|
|
export class FirebaseModelClassifyResult {
|
|
/**
|
|
* Return the identified image label name.
|
|
*/
|
|
label: string;
|
|
/**
|
|
* Returns the confidence score of the identified image.
|
|
*/
|
|
score: number;
|
|
}
|
|
|
|
export class FirebaseModelInput {
|
|
/**
|
|
* Set the one of the input types defined in FirebaseModelInputType enum.
|
|
*/
|
|
inputType: FirebaseModelInputType;
|
|
/**
|
|
* Set the input as string | Blob based on the `inputType`
|
|
*/
|
|
input: string | Blob;
|
|
}
|
|
|
|
/**
|
|
* @name Firebase Model
|
|
* @description This plugin downloads the TensorFlow model from firebase and classify the images.
|
|
*
|
|
* ```typescript
|
|
* import { FirebaseModel } from '@ionic-native/ionic-native-firebase-model';
|
|
*
|
|
*
|
|
* constructor(private firebaseModel: FirebaseModel) { }
|
|
*
|
|
* ...
|
|
*
|
|
*
|
|
* this.firebaseModel.configure('Sample_Model')
|
|
* .subscribe((res: FirebaseModelConfigResult) => console.log(res.status + " - " + res.progress))
|
|
* .catch((error: any) => console.error(error));
|
|
*
|
|
*
|
|
* try {
|
|
* var result:FirebaseModelClassifyResult = await this.firebaseModel.classify("/Documents/input_image.png")
|
|
* console.log(result.label + " - " + result.score)
|
|
*
|
|
* }
|
|
* catch (e) {
|
|
* console.log(e)
|
|
* }
|
|
*
|
|
*
|
|
* ```
|
|
*/
|
|
@Plugin({
|
|
pluginName: 'FirebaseModel',
|
|
plugin: 'cordova-plugin-firebase-model', // npm package name, example: cordova-plugin-camera
|
|
pluginRef: 'FirebaseModel', // the variable reference to call the plugin, example: navigator.geolocation
|
|
repo: '', // the github repository URL for the plugin
|
|
install: 'ionic cordova plugin add cordova-plugin-firebase-model', // OPTIONAL install command, in case the plugin requires variables
|
|
installVariables: [], // OPTIONAL the plugin requires variables
|
|
platforms: ['iOS'], // Array of platforms supported, example: ['Android', 'iOS']
|
|
})
|
|
@Injectable()
|
|
export class FirebaseModel extends AwesomeCordovaNativePlugin {
|
|
/**
|
|
* This function configure the Firebase TFLite model and downloads.
|
|
* @param {string} arg1 Name of the TFLite model which is uploaded in the Firebase console
|
|
* @returns {Observable<FirebaseModelConfigResult>} Returns a observable that gives the callback for downloading progress and status.
|
|
*
|
|
*/
|
|
@Cordova({
|
|
successIndex: 1,
|
|
errorIndex: 2,
|
|
observable: true,
|
|
})
|
|
configure(arg1: string): Observable<FirebaseModelConfigResult> {
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* This function identify the image using the Firebase TFLite model which is configured.
|
|
* @param {FirebaseModelInput} arg1 Base64 string of the input image or .
|
|
* @returns {Promise<FirebaseModelClassifyResult>} Returns a promise that resolves the classification result.
|
|
*
|
|
*/
|
|
@Cordova()
|
|
classify(arg1: FirebaseModelInput): Promise<FirebaseModelClassifyResult> {
|
|
return;
|
|
}
|
|
}
|