public async loadDescriptions()

in client/src/services/google/image-recognition.ts [87:121]


  public async loadDescriptions(imageData: Blob): Promise<ImageDescription[]> {
    if (this.baseConfig.validImageFormats.indexOf(imageData.type) < 0) {
      throw new InvalidFormatError('Image is not in supported format');
    }
    if (imageData.size > this.baseConfig.maxFileSize) {
      logger.log('Image file size is too large - resizing: ' + imageData.size);
      imageData = await resizeImage(imageData, this.baseConfig.resizedImageDimension,
        this.baseConfig.resizedImageDimension, this.baseConfig.resizedImageQuality);
      logger.log('New image size: ' + imageData.size);
    }
    return new Promise<ImageDescription[]>((resolve, reject) => {
      const reader = new FileReader();
      reader.onload = () => {
        const imageURL = reader.result as string;
        const imageDataBase64 = imageURL.split(',')[1]; // remove data scheme prefix
        this.loadImageDescriptions(imageDataBase64).then(
          response => {
            let descriptions = null;
            try {
              descriptions = this.filterImageDescriptions(response);
            } catch (err) {
              logger.warn('Error in image response', err);
              reject(err);
              return;
            }
            resolve(descriptions);
          }, reject);
      };
      reader.onerror = err => {
        logger.warn('Error reading image data', err);
        reject(err);
      };
      reader.readAsDataURL(imageData);
    });
  }