diff --git a/cordova/config.xml b/cordova/config.xml index 48a0651..0b65ac4 100644 --- a/cordova/config.xml +++ b/cordova/config.xml @@ -1,5 +1,5 @@ - + ALVINN Anatomy Lab Visual Identification Neural Network. @@ -14,12 +14,16 @@ + + + + diff --git a/cordova/package-lock.json b/cordova/package-lock.json index 4b2b0e9..7024a76 100644 --- a/cordova/package-lock.json +++ b/cordova/package-lock.json @@ -12,6 +12,7 @@ "cordova-android": "^12.0.1", "cordova-browser": "^7.0.0", "cordova-ios": "^7.0.1", + "cordova-plugin-camera": "^7.0.0", "cordova-plugin-keyboard": "^1.2.0", "cordova-plugin-statusbar": "^4.0.0" } @@ -501,6 +502,46 @@ "node": ">=16.13.0" } }, + "node_modules/cordova-plugin-camera": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-camera/-/cordova-plugin-camera-7.0.0.tgz", + "integrity": "sha512-OVQWZTBb18Y6e5c+bbXt3E4Z1yGnYqaywh2h5vVr/+nxMcdMIE+lm527bRK5vLN/RUqhGYP/Z+5n+O7Fk7fVNw==", + "dev": true, + "engines": { + "cordovaDependencies": { + "3.0.0": { + "cordova-android": ">=6.3.0" + }, + "4.1.0": { + "cordova": ">=7.1.0", + "cordova-android": ">=6.3.0" + }, + "5.0.0": { + "cordova": ">=9.0.0", + "cordova-android": ">=9.0.0", + "cordova-ios": ">=5.1.0" + }, + "5.0.4-dev": { + "cordova": ">=9.0.0", + "cordova-android": "<10.0.0", + "cordova-ios": ">=5.1.0" + }, + "6.0.0": { + "cordova": ">=9.0.0", + "cordova-android": ">=10.0.0", + "cordova-ios": ">=5.1.0" + }, + "7.0.0": { + "cordova": ">=9.0.0", + "cordova-android": ">=12.0.0", + "cordova-ios": ">=5.1.0" + }, + "8.0.0": { + "cordova": ">100" + } + } + } + }, "node_modules/cordova-plugin-keyboard": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/cordova-plugin-keyboard/-/cordova-plugin-keyboard-1.2.0.tgz", @@ -2605,6 +2646,12 @@ "xml-escape": "^1.1.0" } }, + "cordova-plugin-camera": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-camera/-/cordova-plugin-camera-7.0.0.tgz", + "integrity": "sha512-OVQWZTBb18Y6e5c+bbXt3E4Z1yGnYqaywh2h5vVr/+nxMcdMIE+lm527bRK5vLN/RUqhGYP/Z+5n+O7Fk7fVNw==", + "dev": true + }, "cordova-plugin-keyboard": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/cordova-plugin-keyboard/-/cordova-plugin-keyboard-1.2.0.tgz", diff --git a/cordova/package.json b/cordova/package.json index a200579..dc2dca0 100644 --- a/cordova/package.json +++ b/cordova/package.json @@ -16,13 +16,17 @@ "cordova-android": "^12.0.1", "cordova-browser": "^7.0.0", "cordova-ios": "^7.0.1", + "cordova-plugin-camera": "^7.0.0", "cordova-plugin-keyboard": "^1.2.0", "cordova-plugin-statusbar": "^4.0.0" }, "cordova": { "plugins": { "cordova-plugin-statusbar": {}, - "cordova-plugin-keyboard": {} + "cordova-plugin-keyboard": {}, + "cordova-plugin-camera": { + "ANDROIDX_CORE_VERSION": "1.6.+" + } }, "platforms": [ "ios", diff --git a/src/pages/detect.vue b/src/pages/detect.vue index db2ceaa..75e07ff 100644 --- a/src/pages/detect.vue +++ b/src/pages/detect.vue @@ -39,7 +39,7 @@ - + @@ -55,6 +55,7 @@ + {{ isCordova }} @@ -225,13 +226,13 @@ imageRegion: '', imageLoaded: false, imageView: '', - reader: new FileReader(), detectorName: '', detectorLevel: 50, detectorLabels: [], serverSettings: {}, debugOn: false, - debugText: ['Variables loaded'] + debugText: ['Variables loaded'], + isCordova: !!window.cordova } }, created () { @@ -334,7 +335,7 @@ var doodsData = { "detector_name": this.detectorName, "detect": detectStructures, - "data": this.reader.result.split(',')[1] + "data": this.imageView.split(',')[1] } */ var doodsData = { @@ -359,7 +360,14 @@ } }, selectImage () { - var loadResult = this.$refs.image_chooser.click() + if (this.isCordova) { + navigator.camera.getPicture(this.getImage, this.onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL, correctOrientation: true }); + } else { + var loadResult = this.$refs.image_chooser.click() + } + }, + onFail (message) { + alert(`Camera fail: ${message}`) }, selectChip ( iChip ) { if (this.selectedChip == iChip) { @@ -394,21 +402,26 @@ this.resetView() }); }, - getImage () { + getImage (searchImage) { var self = this - const searchImage = this.$refs.image_chooser.files[0] - let loadImage =new Promise((resolve, reject) => { - this.imageView = URL.createObjectURL(searchImage) - this.reader.readAsDataURL(searchImage) + let loadImage =new Promise(resolve => { + if (this.isCordova) { + this.imageView = 'data:image/jpg;base64,' + searchImage + } else { + const searchImage = this.$refs.image_chooser.files[0] + var reader = new FileReader() + reader.addEventListener("loadend", () => {this.imageView = reader.result}) + reader.readAsDataURL(searchImage) + } resolve() }) - loadImage.then(() => { + loadImage.then((imageData) => { this.imageLoaded = true this.resultData = {} this.resetView() }).catch((e) => { console.log(e.message) - f7.dialog.alert('Error loading image') + f7.dialog.alert(`Error loading image: ${e.message}`) }) }, resetView() {