You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
| const loadImage = require('blueimp-load-image');
 | |
| 
 | |
| const DEFAULT_JPEG_QUALITY = 0.85;
 | |
| 
 | |
| // File | Blob | URLString -> LoadImageOptions -> Promise<DataURLString>
 | |
| //
 | |
| // 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
 | |
|     );
 | |
|   });
 | |
| };
 |