11import { ImageSource } from "tns-core-modules/image-source" ;
22import { MLKitScanBarcodesOnDeviceOptions , MLKitScanBarcodesOnDeviceResult , MLKitScanBarcodesResultBounds } from "./" ;
3- import { MLKitVisionOptions } from "../index" ;
43import { BarcodeFormat , MLKitBarcodeScanner as MLKitBarcodeScannerBase } from "./barcodescanning-common" ;
54import * as application from "tns-core-modules/application" ;
65
@@ -68,14 +67,21 @@ export class MLKitBarcodeScanner extends MLKitBarcodeScannerBase {
6867 } ;
6968
7069 if ( barcodes && barcodes . size ( ) > 0 ) {
70+
71+ const image : android . graphics . Bitmap = this . lastVisionImage ? this . lastVisionImage . getBitmap ( ) : null ;
72+
7173 // see https://github.com/firebase/quickstart-android/blob/0f4c86877fc5f771cac95797dffa8bd026dd9dc7/mlkit/app/src/main/java/com/google/firebase/samples/apps/mlkit/textrecognition/TextRecognitionProcessor.java#L62
7274 for ( let i = 0 ; i < barcodes . size ( ) ; i ++ ) {
7375 const barcode = barcodes . get ( i ) ;
7476 result . barcodes . push ( {
7577 value : barcode . getRawValue ( ) ,
7678 format : BarcodeFormat [ barcode . getFormat ( ) ] ,
7779 android : barcode ,
78- bounds : boundingBoxToBounds ( barcode . getBoundingBox ( ) )
80+ bounds : boundingBoxToBounds ( barcode . getBoundingBox ( ) ) ,
81+ image : ! image ? null : {
82+ width : image . getWidth ( ) ,
83+ height : image . getHeight ( )
84+ }
7985 } ) ;
8086 }
8187
@@ -124,6 +130,9 @@ export function scanBarcodesOnDevice(options: MLKitScanBarcodesOnDeviceOptions):
124130 try {
125131 const firebaseVisionBarcodeDetector = getBarcodeDetector ( options . formats ) ;
126132
133+ const image : android . graphics . Bitmap = options . image instanceof ImageSource ? options . image . android : options . image . imageSource . android ;
134+ const firImage = com . google . firebase . ml . vision . common . FirebaseVisionImage . fromBitmap ( image ) ;
135+
127136 const onSuccessListener = new gmsTasks . OnSuccessListener ( {
128137 onSuccess : barcodes => {
129138 const result = < MLKitScanBarcodesOnDeviceResult > {
@@ -138,7 +147,11 @@ export function scanBarcodesOnDevice(options: MLKitScanBarcodesOnDeviceOptions):
138147 value : barcode . getRawValue ( ) ,
139148 format : BarcodeFormat [ barcode . getFormat ( ) ] ,
140149 android : barcode ,
141- bounds : boundingBoxToBounds ( barcode . getBoundingBox ( ) )
150+ bounds : boundingBoxToBounds ( barcode . getBoundingBox ( ) ) ,
151+ image : {
152+ width : image . getWidth ( ) ,
153+ height : image . getHeight ( )
154+ }
142155 } ) ;
143156 }
144157 }
@@ -153,7 +166,7 @@ export function scanBarcodesOnDevice(options: MLKitScanBarcodesOnDeviceOptions):
153166 } ) ;
154167
155168 firebaseVisionBarcodeDetector
156- . detectInImage ( getImage ( options ) )
169+ . detectInImage ( firImage )
157170 . addOnSuccessListener ( onSuccessListener )
158171 . addOnFailureListener ( onFailureListener ) ;
159172
@@ -163,8 +176,3 @@ export function scanBarcodesOnDevice(options: MLKitScanBarcodesOnDeviceOptions):
163176 }
164177 } ) ;
165178}
166-
167- function getImage ( options : MLKitVisionOptions ) : any /* com.google.firebase.ml.vision.common.FirebaseVisionImage */ {
168- const image : android . graphics . Bitmap = options . image instanceof ImageSource ? options . image . android : options . image . imageSource . android ;
169- return com . google . firebase . ml . vision . common . FirebaseVisionImage . fromBitmap ( image ) ;
170- }
0 commit comments