{"version":3,"file":"ng2-img-max.mjs","sources":["../../../src/lib/img-exif.service.ts","../../../src/lib/img-max-size.service.ts","../../../src/lib/ng2-pica.service.ts","../../../src/lib/img-maxpx-size.service.ts","../../../src/lib/ng2-img-max.service.ts","../../../src/lib/ng2-img-max.module.ts","../../../src/ng2-img-max.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\r\nimport * as exifr from 'exifr';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ImgExifService {\r\n  public getOrientedImage(image: HTMLImageElement): Promise<HTMLImageElement> {\r\n    return new Promise<HTMLImageElement>(resolve => {\r\n      let img: any;\r\n      exifr.orientation(image).catch(err => undefined).then(orientation => {\r\n        if (orientation != 1) {\r\n          let canvas: HTMLCanvasElement = document.createElement(\"canvas\"),\r\n            ctx: CanvasRenderingContext2D = <CanvasRenderingContext2D>canvas.getContext(\"2d\"),\r\n            cw: number = image.width,\r\n            ch: number = image.height,\r\n            cx: number = 0,\r\n            cy: number = 0,\r\n            deg: number = 0;\r\n          switch (orientation) {\r\n            case 3:\r\n            case 4:\r\n              cx = -image.width;\r\n              cy = -image.height;\r\n              deg = 180;\r\n              break;\r\n            case 5:\r\n            case 6:\r\n              cw = image.height;\r\n              ch = image.width;\r\n              cy = -image.height;\r\n              deg = 90;\r\n              break;\r\n            case 7:\r\n            case 8:\r\n              cw = image.height;\r\n              ch = image.width;\r\n              cx = -image.width;\r\n              deg = 270;\r\n              break;\r\n            default:\r\n              break;\r\n          }\r\n\r\n          canvas.width = cw;\r\n          canvas.height = ch;\r\n          if (orientation && [2, 4, 5, 7].indexOf(orientation) > -1) {\r\n            //flip image\r\n            ctx.translate(cw, 0);\r\n            ctx.scale(-1, 1);\r\n          }\r\n          ctx.rotate(deg * Math.PI / 180);\r\n          ctx.drawImage(image, cx, cy);\r\n          img = document.createElement(\"img\");\r\n          img.width = cw;\r\n          img.height = ch;\r\n          img.addEventListener('load', function () {\r\n            resolve(img);\r\n          });\r\n          img.src = canvas.toDataURL(\"image/png\");\r\n        } else {\r\n          resolve(image);\r\n        }\r\n      });\r\n    });\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\n\r\nimport {ImgExifService} from './img-exif.service';\r\n\r\n\r\nconst MAX_STEPS = 15;\r\ndeclare var self: any;\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ImgMaxSizeService {\r\n  timeAtStart: number = 0;\r\n  initialFile: File | undefined;\r\n\r\n  constructor(private imageExifService: ImgExifService) {\r\n  }\r\n\r\n  public compressImage(file: File, maxSizeInMB: number, ignoreAlpha: boolean = false, logExecutionTime: boolean = false): Observable<any> {\r\n    let compressedFileSubject: Subject<any> = new Subject<any>();\r\n    this.timeAtStart = new Date().getTime();\r\n    this.initialFile = file;\r\n    if (file.type !== \"image/jpeg\" && file.type !== \"image/png\") {\r\n      //END OF COMPRESSION\r\n      setTimeout(() => {\r\n        compressedFileSubject.error({\r\n          compressedFile: file,\r\n          reason: \"File provided is neither of type jpg nor of type png.\",\r\n          error: \"INVALID_EXTENSION\"\r\n        });\r\n      }, 0);\r\n      return compressedFileSubject.asObservable();\r\n    }\r\n\r\n    let oldFileSize = file.size / 1024 / 1024;\r\n    if (oldFileSize < maxSizeInMB) {\r\n      // END OF COMPRESSION\r\n      // FILE SIZE ALREADY BELOW MAX_SIZE -> no compression needed\r\n      setTimeout(() => {\r\n        compressedFileSubject.next(file)\r\n      }, 0);\r\n      return compressedFileSubject.asObservable();\r\n    }\r\n\r\n    let cvs = document.createElement('canvas');\r\n    let ctx = cvs.getContext('2d');\r\n    let img = new Image();\r\n    let self = this;\r\n    img.onload = () => {\r\n      this.imageExifService.getOrientedImage(img).then(orientedImg => {\r\n        window.URL.revokeObjectURL(img.src);\r\n        cvs.width = orientedImg.width;\r\n        cvs.height = orientedImg.height;\r\n        ctx?.drawImage(orientedImg, 0, 0);\r\n        let imageData = ctx?.getImageData(0, 0, orientedImg.width, orientedImg.height);\r\n        if (file.type === \"image/png\" && this.isImgUsingAlpha(imageData) && !ignoreAlpha) {\r\n          //png image with alpha\r\n          compressedFileSubject.error({\r\n            compressedFile: file,\r\n            reason: \"File provided is a png image which uses the alpha channel. No compression possible.\",\r\n            error: \"PNG_WITH_ALPHA\"\r\n          });\r\n        }\r\n        ctx = cvs.getContext('2d', {'alpha': false});\r\n        ctx?.drawImage(orientedImg, 0, 0);\r\n        self.getCompressedFile(cvs, 50, maxSizeInMB, 1).then((compressedFile) => {\r\n          compressedFileSubject.next(compressedFile);\r\n          self.logExecutionTime(logExecutionTime);\r\n        }).catch((error) => {\r\n          compressedFileSubject.error(error);\r\n          self.logExecutionTime(logExecutionTime);\r\n        });\r\n      });\r\n    }\r\n    img.src = window.URL.createObjectURL(file);\r\n    return compressedFileSubject.asObservable();\r\n  };\r\n\r\n  private getCompressedFile(cvs: HTMLCanvasElement, quality: number, maxSizeInMB: number, currentStep: number): Promise<File> {\r\n    let result: Promise<File> = new Promise((resolve, reject) => {\r\n      cvs.toBlob((blob) => {\r\n\r\n        if(!blob){\r\n          return reject({\r\n            compressedFile: null,\r\n            reason: \"Blob error\",\r\n            error: \"BAD_BLOB\"\r\n          });\r\n        }\r\n\r\n        if (currentStep + 1 > MAX_STEPS) {\r\n          //COMPRESSION END\r\n          //maximal steps reached\r\n          reject({\r\n            compressedFile: this.getResultFile(blob),\r\n            reason: \"Could not find the correct compression quality in \" + MAX_STEPS + \" steps.\",\r\n            error: \"MAX_STEPS_EXCEEDED\"\r\n          });\r\n        } else {\r\n          let newQuality = this.getCalculatedQuality(blob, quality, maxSizeInMB, currentStep);\r\n          this.checkCompressionStatus(cvs, blob, quality, maxSizeInMB, currentStep, newQuality)\r\n            .then(result => {\r\n              resolve(result);\r\n            })\r\n            .catch(result => {\r\n              reject(result);\r\n            });\r\n        }\r\n      }, \"image/jpeg\", quality / 100);\r\n    });\r\n    return result;\r\n  }\r\n\r\n  private getResultFile(blob: Blob): File | null {\r\n\r\n    if(!this.initialFile){\r\n      return null;\r\n    }\r\n\r\n    return this.generateResultFile(blob, this.initialFile.name, this.initialFile.type, new Date().getTime());\r\n  }\r\n\r\n  private generateResultFile(blob: Blob, name: string, type: string, lastModified: number): File {\r\n    let resultFile = new Blob([blob], {type: type});\r\n    return this.blobToFile(resultFile, name, lastModified);\r\n  }\r\n\r\n  private blobToFile(blob: Blob, name: string, lastModified: number): File {\r\n    let file: any = blob;\r\n    file.name = name;\r\n    file.lastModified = lastModified;\r\n\r\n    //Cast to a File() type\r\n    return <File>file;\r\n  }\r\n\r\n  private getCalculatedQuality(blob: Blob, quality: number, maxSizeInMB: number, currentStep: number): number {\r\n\r\n    if(!this.initialFile){\r\n      return 0;\r\n    }\r\n\r\n    //CALCULATE NEW QUALITY\r\n    let currentSize = blob.size / 1024 / 1024;\r\n    let ratioMaxSizeToCurrentSize = maxSizeInMB / currentSize;\r\n    if (ratioMaxSizeToCurrentSize > 5) {\r\n      //max ratio to avoid extreme quality values\r\n      ratioMaxSizeToCurrentSize = 5;\r\n    }\r\n    let ratioMaxSizeToInitialSize = currentSize / (this.initialFile.size / 1024 / 1024);\r\n    if (ratioMaxSizeToInitialSize < 0.05) {\r\n      //min ratio to avoid extreme quality values\r\n      ratioMaxSizeToInitialSize = 0.05;\r\n    }\r\n    let newQuality = 0;\r\n    let multiplicator = Math.abs(ratioMaxSizeToInitialSize - 1) * 10 / (currentStep * 1.7) / ratioMaxSizeToCurrentSize;\r\n    if (multiplicator < 1) {\r\n      multiplicator = 1;\r\n    }\r\n    if (ratioMaxSizeToCurrentSize >= 1) {\r\n      newQuality = quality + (ratioMaxSizeToCurrentSize - 1) * 10 * multiplicator;\r\n    } else {\r\n      newQuality = quality - (1 - ratioMaxSizeToCurrentSize) * 10 * multiplicator;\r\n    }\r\n\r\n    if (newQuality > 100) {\r\n      //max quality = 100, so let's set the new quality to the value in between the old quality and 100 in case of > 100\r\n      newQuality = quality + (100 - quality) / 2;\r\n    }\r\n\r\n    if (newQuality < 0) {\r\n      //min quality = 0, so let's set the new quality to the value in between the old quality and 0 in case of < 0\r\n      newQuality = quality - quality / 2;\r\n    }\r\n    return newQuality;\r\n  }\r\n\r\n  private checkCompressionStatus(cvs: HTMLCanvasElement, blob: Blob, quality: number, maxSizeInMB: number, currentStep: number, newQuality: number): Promise<any> {\r\n    let result: Promise<any> = new Promise((resolve, reject) => {\r\n      if (quality === 100 && newQuality >= 100) {\r\n        //COMPRESSION END\r\n        //Seems like quality 100 is max but file still too small, case that shouldn't exist as the compression shouldn't even have started in the first place\r\n        reject({\r\n          compressedFile: this.initialFile,\r\n          reason: \"Unfortunately there was an error while compressing the file.\",\r\n          error: \"FILE_BIGGER_THAN_INITIAL_FILE\"\r\n        });\r\n      } else if ((quality < 1) && (newQuality < quality)) {\r\n        //COMPRESSION END\r\n        //File size still too big but can't compress further than quality=0\r\n        reject({\r\n          compressedFile: this.getResultFile(blob),\r\n          reason: \"Could not compress image enough to fit the maximal file size limit.\",\r\n          error: \"UNABLE_TO_COMPRESS_ENOUGH\"\r\n        });\r\n      } else if ((newQuality > quality) && (Math.round(quality) == Math.round(newQuality))) {\r\n        //COMPRESSION END\r\n        //next steps quality would be the same quality but newQuality is slightly bigger than old one, means we most likely found the nearest quality to compress to maximal size\r\n        resolve(this.getResultFile(blob));\r\n      } else if (currentStep > 5 && (newQuality > quality) && (newQuality < quality + 2)) {\r\n        //COMPRESSION END\r\n        //for some rare occasions the algorithm might be stuck around e.g. 98.5 and 97.4 because of the maxQuality of 100, the current quality is the nearest possible quality in that case\r\n        resolve(this.getResultFile(blob));\r\n      } else if ((newQuality > quality) && Number.isInteger(quality) && (Math.floor(newQuality) == quality)) {\r\n        //COMPRESSION END\r\n        /*\r\n            in the previous step if ((quality > newQuality) && (Math.round(quality) == Math.round(newQuality))) applied, so\r\n            newQuality = Math.round(newQuality) - 1; this was done to reduce the quality at least a full integer down to not waste a step\r\n            with the same compression rate quality as before. Now, the newQuality is still only in between the old quality (e.g. 93)\r\n            and the newQuality (e.g. 94) which most likely means that the value for the newQuality (the bigger one) would make the filesize\r\n            too big so we should just stick with the current, lower quality and return that file.\r\n        */\r\n        resolve(this.getResultFile(blob));\r\n      } else {\r\n        //CONTINUE COMPRESSION\r\n        if ((quality > newQuality) && (Math.round(quality) == Math.round(newQuality))) {\r\n          //quality can only be an integer -> make sure difference between old quality and new one is at least a whole integer number\r\n          // - it would be nonsense to compress again with the same quality\r\n          newQuality = Math.round(newQuality) - 1;\r\n        }\r\n        //recursively call function again\r\n        resolve(this.getCompressedFile(cvs, newQuality, maxSizeInMB, currentStep + 1));\r\n      }\r\n    });\r\n    return result;\r\n  }\r\n\r\n  private isImgUsingAlpha(imageData:any): boolean {\r\n    for (var i = 0; i < imageData.data.length; i += 4) {\r\n      if (imageData.data[i + 3] !== 255) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private logExecutionTime(logExecutionTime: boolean): void {\r\n    if (logExecutionTime) {\r\n      console.info(\"Execution time: \", new Date().getTime() - this.timeAtStart + \"ms\");\r\n    }\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {ImgExifService} from './img-exif.service';\r\nimport picaLib from 'pica';\r\n\r\nconst pica = (picaLib as any)();\r\nconst globalWindow: any = window;\r\n\r\nexport interface ResizeCanvasOptions {\r\n  quality?: number;\r\n  alpha?: boolean;\r\n  unsharpAmount?: number;\r\n  unsharpRadius?: number;\r\n  unsharpThreshold?: number;\r\n}\r\n\r\nexport interface ResizeBufferOptions {\r\n  src: Uint8Array;\r\n  width: number;\r\n  height: number;\r\n  toWidth: number;\r\n  toHeight: number;\r\n  quality?: number;\r\n  alpha?: boolean;\r\n  unsharpAmount?: number;\r\n  unsharpRadius?: number;\r\n  unsharpThreshold?: number;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class Ng2PicaService {\r\n  constructor(private imageExifService: ImgExifService) {\r\n  }\r\n\r\n  public resize(files: File[], width: number, height: number, keepAspectRatio: boolean = false): Observable<any> {\r\n    let resizedFile: Subject<File> = new Subject<File>();\r\n    for (let i = 0; i < files.length; i++) {\r\n      this.resizeFile(files[i], width, height, keepAspectRatio).then((returnedFile) => {\r\n        resizedFile.next(returnedFile);\r\n      }).catch((error) => {\r\n        resizedFile.error(error);\r\n      });\r\n    }\r\n    return resizedFile.asObservable();\r\n  }\r\n\r\n  public resizeCanvas(from: HTMLCanvasElement, to: HTMLCanvasElement, options: ResizeCanvasOptions): Promise<HTMLCanvasElement> {\r\n    let result: Promise<HTMLCanvasElement> = new Promise((resolve, reject) => {\r\n      let curPica = pica;\r\n      if (!curPica || !curPica.resize) {\r\n        curPica = new globalWindow.pica();\r\n      }\r\n      curPica.resize(from, to, options)\r\n        .then((response: any) => {\r\n            resolve(response);\r\n          },\r\n          (error: any) => {\r\n            reject(error);\r\n          });\r\n    });\r\n    return result;\r\n  }\r\n\r\n  public resizeBuffer(options: ResizeBufferOptions): Promise<Uint8Array> {\r\n    let result: Promise<Uint8Array> = new Promise((resolve, reject) => {\r\n      let curPica = pica;\r\n      if (!curPica || !curPica.resizeBuffer) {\r\n        curPica = new globalWindow.pica();\r\n      }\r\n      curPica.resizeBuffer(options)\r\n        .then((response: any) => {\r\n            resolve(response);\r\n          },\r\n          (error: any) => {\r\n            reject(error);\r\n          });\r\n    });\r\n    return result;\r\n  }\r\n\r\n  private resizeFile(file: File, width: number, height: number, keepAspectRatio: boolean = false): Promise<File> {\r\n    let result: Promise<File> = new Promise((resolve, reject) => {\r\n      let fromCanvas: HTMLCanvasElement = document.createElement('canvas');\r\n      let ctx = fromCanvas.getContext('2d');\r\n      let img = new Image();\r\n      img.onload = () => {\r\n        this.imageExifService.getOrientedImage(img).then(orientedImg => {\r\n          globalWindow.URL.revokeObjectURL(img.src);\r\n          fromCanvas.width = orientedImg.width;\r\n          fromCanvas.height = orientedImg.height;\r\n          ctx?.drawImage(orientedImg, 0, 0);\r\n          let imageData = ctx?.getImageData(0, 0, orientedImg.width, orientedImg.height);\r\n          if (keepAspectRatio && imageData) {\r\n            let ratio = Math.min(width / imageData.width, height / imageData.height);\r\n            width = Math.round(imageData.width * ratio);\r\n            height = Math.round(imageData.height * ratio);\r\n          }\r\n          let useAlpha = true;\r\n          if (file.type === \"image/jpeg\" || (file.type === \"image/png\" && !this.isImgUsingAlpha(imageData))) {\r\n            //image without alpha\r\n            useAlpha = false;\r\n            ctx = fromCanvas.getContext('2d', {'alpha': false});\r\n            ctx?.drawImage(orientedImg, 0, 0);\r\n          }\r\n          let toCanvas: HTMLCanvasElement = document.createElement('canvas');\r\n          toCanvas.width = width;\r\n          toCanvas.height = height;\r\n          this.resizeCanvas(fromCanvas, toCanvas, {'alpha': useAlpha})\r\n            .then((resizedCanvas: HTMLCanvasElement) => {\r\n              resizedCanvas.toBlob((blob) => {\r\n                if (!blob) {\r\n                  return reject('error blob')\r\n                }\r\n                let newFile: File = this.generateResultFile(blob, file.name, file.type, new Date().getTime());\r\n                resolve(newFile);\r\n              }, file.type);\r\n            })\r\n            .catch((error) => {\r\n              reject(error);\r\n            });\r\n        });\r\n      }\r\n      img.src = globalWindow.URL.createObjectURL(file);\r\n    });\r\n    return result;\r\n  }\r\n\r\n  private isImgUsingAlpha(imageData: any): boolean {\r\n    for (var i = 0; i < imageData.data.length; i += 4) {\r\n      if (imageData.data[i + 3] !== 255) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private generateResultFile(blob: Blob, name: string, type: string, lastModified: number): File {\r\n    let resultFile = new Blob([blob], {type: type});\r\n    return this.blobToFile(resultFile, name, lastModified);\r\n  }\r\n\r\n  private blobToFile(blob: Blob, name: string, lastModified: number): File {\r\n    let file: any = blob;\r\n    file.name = name;\r\n    file.lastModified = lastModified;\r\n\r\n    //Cast to a File() type\r\n    return <File>file;\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\n\r\nimport {ImgExifService} from './img-exif.service';\r\nimport {Ng2PicaService} from './ng2-pica.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ImgMaxPXSizeService {\r\n  timeAtStart: number = 0;\r\n\r\n  constructor(private ng2PicaService: Ng2PicaService,\r\n              private imageExifService: ImgExifService) {\r\n  }\r\n\r\n  public resizeImage(file: File, maxWidth: number, maxHeight: number, logExecutionTime: boolean = false): Observable<any> {\r\n    let resizedFileSubject: Subject<any> = new Subject<any>();\r\n    this.timeAtStart = new Date().getTime();\r\n    if (file.type !== \"image/jpeg\" && file.type !== \"image/png\") {\r\n      //END OF RESIZE\r\n      setTimeout(() => {\r\n        resizedFileSubject.error({\r\n          resizedFile: file,\r\n          reason: \"The provided File is neither of type jpg nor of type png.\",\r\n          error: \"INVALID_EXTENSION\"\r\n        });\r\n      }, 0);\r\n      return resizedFileSubject.asObservable();\r\n    }\r\n    let img = new Image();\r\n    let self = this;\r\n    img.onload = () => {\r\n      this.imageExifService.getOrientedImage(img).then(orientedImg => {\r\n        window.URL.revokeObjectURL(img.src);\r\n        let currentWidth = orientedImg.width;\r\n        let currentHeight = orientedImg.height;\r\n        let newWidth = currentWidth;\r\n        let newHeight = currentHeight;\r\n        if (newWidth > maxWidth) {\r\n          newWidth = maxWidth\r\n          //resize height proportionally\r\n          let ratio = maxWidth / currentWidth; //is gonna be <1\r\n          newHeight = newHeight * ratio;\r\n        }\r\n        currentHeight = newHeight;\r\n        if (newHeight > maxHeight) {\r\n          newHeight = maxHeight;\r\n          //resize width proportionally\r\n          let ratio = maxHeight / currentHeight; //is gonna be <1\r\n          newWidth = newWidth * ratio;\r\n        }\r\n        if (newHeight === orientedImg.height && newWidth === orientedImg.width) {\r\n          //no resizing necessary\r\n          resizedFileSubject.next(file);\r\n          self.logExecutionTime(logExecutionTime);\r\n        } else {\r\n          self.ng2PicaService.resize([file], newWidth, newHeight).subscribe((result) => {\r\n            //all good, result is a file\r\n            resizedFileSubject.next(result);\r\n            self.logExecutionTime(logExecutionTime);\r\n          }, error => {\r\n            //something went wrong\r\n            resizedFileSubject.error({resizedFile: file, reason: error, error: \"PICA_ERROR\"});\r\n            self.logExecutionTime(logExecutionTime);\r\n          });\r\n        }\r\n      });\r\n    };\r\n    img.src = window.URL.createObjectURL(file);\r\n\r\n    return resizedFileSubject.asObservable();\r\n  };\r\n\r\n  private logExecutionTime(logExecutionTime: boolean): void {\r\n    if (logExecutionTime) {\r\n      console.info(\"Execution time: \", new Date().getTime() - this.timeAtStart + \"ms\");\r\n    }\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {ImgMaxSizeService} from './img-max-size.service';\r\nimport {ImgMaxPXSizeService} from './img-maxpx-size.service';\r\nimport {ImgExifService} from './img-exif.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class Ng2ImgMaxService {\r\n  constructor(private imgMaxSizeService: ImgMaxSizeService,\r\n              private imgMaxPXSizeService: ImgMaxPXSizeService,\r\n              private imageExifService: ImgExifService) {\r\n  }\r\n\r\n  public compress(files: File[], maxSizeInMB: number, ignoreAlpha: boolean = false, logExecutionTime: boolean = false): Observable<any> {\r\n    let compressedFileSubject: Subject<any> = new Subject<any>();\r\n    files.forEach((file) => {\r\n      this.compressImage(file, maxSizeInMB, ignoreAlpha, logExecutionTime).subscribe((value) => {\r\n        compressedFileSubject.next(value);\r\n      }, error => {\r\n        compressedFileSubject.error(error);\r\n      });\r\n    });\r\n    return compressedFileSubject.asObservable();\r\n  }\r\n\r\n  public resize(files: File[], maxWidth: number, maxHeight: number, logExecutionTime: boolean = false): Observable<any> {\r\n    let resizedFileSubject: Subject<any> = new Subject<any>();\r\n    files.forEach((file) => {\r\n      this.resizeImage(file, maxWidth, maxHeight, logExecutionTime).subscribe((value) => {\r\n        resizedFileSubject.next(value);\r\n      }, error => {\r\n        resizedFileSubject.error(error);\r\n      });\r\n    });\r\n    return resizedFileSubject.asObservable();\r\n  }\r\n\r\n  public compressImage(file: File, maxSizeInMB: number, ignoreAlpha: boolean = false, logExecutionTime: boolean = false): Observable<any> {\r\n    return this.imgMaxSizeService.compressImage(file, maxSizeInMB, ignoreAlpha, logExecutionTime);\r\n  }\r\n\r\n  public resizeImage(file: File, maxWidth: number, maxHeight: number, logExecutionTime: boolean = false): Observable<any> {\r\n    return this.imgMaxPXSizeService.resizeImage(file, maxWidth, maxHeight, logExecutionTime);\r\n  }\r\n\r\n  public getEXIFOrientedImage(image: HTMLImageElement): Promise<HTMLImageElement> {\r\n    return this.imageExifService.getOrientedImage(image);\r\n  }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {Ng2ImgMaxService} from \"./ng2-img-max.service\";\r\nimport {ImgMaxSizeService} from \"./img-max-size.service\";\r\nimport {ImgMaxPXSizeService} from \"./img-maxpx-size.service\";\r\nimport {ImgExifService} from \"./img-exif.service\";\r\nimport {Ng2PicaService} from './ng2-pica.service';\r\n\r\n@NgModule({\r\n  providers: [\r\n    Ng2PicaService,\r\n    ImgMaxPXSizeService,\r\n    ImgMaxSizeService,\r\n    ImgExifService,\r\n    Ng2ImgMaxService,\r\n    Ng2PicaService\r\n  ]\r\n})\r\nexport class Ng2ImgMaxModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ImgExifService","i1.Ng2PicaService","i2.ImgExifService","i1.ImgMaxSizeService","i2.ImgMaxPXSizeService","i3.ImgExifService"],"mappings":"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"}