const loadImage = require('blueimp-load-image'); const DEFAULT_JPEG_QUALITY = 0.85; // File | Blob | URLString -> LoadImageOptions -> Promise // // Documentation for `options` (`LoadImageOptions`): // https://github.com/blueimp/JavaScript-Load-Image/tree/v2.18.0#options exports.autoOrientImage = (fileOrBlobOrURL, options = {}) => { const optionsWithDefaults = Object.assign( { type: 'image/jpeg', quality: DEFAULT_JPEG_QUALITY, }, options, { canvas: true, orientation: true, } ); return new Promise((resolve, reject) => { loadImage(fileOrBlobOrURL, (canvasOrError) => { if (canvasOrError.type === 'error') { const error = new Error('autoOrientImage: Failed to process image'); error.cause = canvasOrError; reject(error); return; } const canvas = canvasOrError; const dataURL = canvas.toDataURL( optionsWithDefaults.type, optionsWithDefaults.quality ); resolve(dataURL); }, optionsWithDefaults); }); };