UNPKG

ng-pica

Version:

Angular module to resize images files in browser

107 lines 10.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as EXIF from 'exif-js'; var NgxPicaExifService = /** @class */ (function () { function NgxPicaExifService() { } /** * @param {?} image * @return {?} */ NgxPicaExifService.prototype.getExifOrientedImage = /** * @param {?} image * @return {?} */ function (image) { return new Promise((/** * @param {?} resolve * @param {?} reject * @return {?} */ function (resolve, reject) { EXIF.getData(((/** @type {?} */ (image))), (/** * @return {?} */ function () { /** @type {?} */ var allExifMetaData = EXIF.getAllTags(image); /** @type {?} */ var exifOrientation = allExifMetaData.Orientation; if (exifOrientation) { if (!/^[1-8]$/.test(exifOrientation)) { throw new Error('orientation should be [1-8]'); } /** @type {?} */ var canvas = document.createElement('canvas'); /** @type {?} */ var ctx = canvas.getContext('2d'); /** @type {?} */ var deg = 0; /** @type {?} */ var cx = 0; /** @type {?} */ var cy = 0; /** @type {?} */ var width = image.width; /** @type {?} */ var height = image.height; if ([5, 6, 7, 8].indexOf(exifOrientation) > -1) { width = image.height; height = image.width; } canvas.width = width; canvas.height = height; switch (exifOrientation) { case 3: case 4: cx = -image.width; cy = -image.height; deg = 180; break; case 5: case 6: cy = -image.height; deg = 90; break; case 7: case 8: cx = -image.width; deg = 270; break; default: break; } if ([2, 4, 5, 7].indexOf(exifOrientation) > -1) { ctx.translate(width, 0); ctx.scale(-1, 1); } ctx.rotate(deg / 180 * Math.PI); ctx.drawImage(image, cx, cy); /** @type {?} */ var img_1 = new Image(); img_1.width = width; img_1.height = height; img_1.onload = (/** * @return {?} */ function () { resolve(img_1); }); img_1.src = canvas.toDataURL(); } else { resolve(image); } })); })); }; NgxPicaExifService.decorators = [ { type: Injectable } ]; return NgxPicaExifService; }()); export { NgxPicaExifService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXBpY2EtZXhpZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctcGljYS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtcGljYS1leGlmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFHaEM7SUFBQTtJQThFQSxDQUFDOzs7OztJQTNFVSxpREFBb0I7Ozs7SUFBM0IsVUFBNEIsS0FBdUI7UUFDL0MsT0FBTyxJQUFJLE9BQU87Ozs7O1FBQW1CLFVBQUMsT0FBTyxFQUFFLE1BQU07WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFBLEtBQUssRUFBTyxDQUFDOzs7WUFBRTs7b0JBQ25CLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQzs7b0JBQzFDLGVBQWUsR0FBRyxlQUFlLENBQUMsV0FBVztnQkFFakQsSUFBSSxlQUFlLEVBQUU7b0JBRWpCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFO3dCQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7cUJBQ2xEOzt3QkFFSyxNQUFNLEdBQXNCLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDOzt3QkFDOUQsR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDOzt3QkFFN0IsR0FBRyxHQUFHLENBQUM7O3dCQUNQLEVBQUUsR0FBRyxDQUFDOzt3QkFDTixFQUFFLEdBQUcsQ0FBQzs7d0JBQ04sS0FBSyxHQUFXLEtBQUssQ0FBQyxLQUFLOzt3QkFDM0IsTUFBTSxHQUFXLEtBQUssQ0FBQyxNQUFNO29CQUVqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUM1QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQzt3QkFDckIsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7cUJBQ3hCO29CQUVELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztvQkFFdkIsUUFBUSxlQUFlLEVBQUU7d0JBQ3JCLEtBQUssQ0FBQyxDQUFDO3dCQUNQLEtBQUssQ0FBQzs0QkFDRixFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDOzRCQUNsQixFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOzRCQUNuQixHQUFHLEdBQUcsR0FBRyxDQUFDOzRCQUNWLE1BQU07d0JBQ1YsS0FBSyxDQUFDLENBQUM7d0JBQ1AsS0FBSyxDQUFDOzRCQUNGLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7NEJBQ25CLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQ1QsTUFBTTt3QkFDVixLQUFLLENBQUMsQ0FBQzt3QkFDUCxLQUFLLENBQUM7NEJBQ0YsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzs0QkFDbEIsR0FBRyxHQUFHLEdBQUcsQ0FBQzs0QkFDVixNQUFNO3dCQUNWOzRCQUNJLE1BQU07cUJBQ2I7b0JBRUQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTt3QkFDNUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3BCO29CQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs7d0JBRXZCLEtBQUcsR0FBRyxJQUFJLEtBQUssRUFBRTtvQkFFdkIsS0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ2xCLEtBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO29CQUVwQixLQUFHLENBQUMsTUFBTTs7O29CQUFHO3dCQUNULE9BQU8sQ0FBQyxLQUFHLENBQUMsQ0FBQztvQkFDakIsQ0FBQyxDQUFBLENBQUM7b0JBRUYsS0FBRyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ2hDO3FCQUFNO29CQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbEI7WUFDTCxDQUFDLEVBQUMsQ0FBQztRQUNQLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0JBNUVKLFVBQVU7O0lBOEVYLHlCQUFDO0NBQUEsQUE5RUQsSUE4RUM7U0E3RVksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIEVYSUYgZnJvbSAnZXhpZi1qcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neFBpY2FFeGlmU2VydmljZSB7XG5cbiAgICBwdWJsaWMgZ2V0RXhpZk9yaWVudGVkSW1hZ2UoaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpOiBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIEVYSUYuZ2V0RGF0YSgoaW1hZ2UgYXMgYW55KSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbEV4aWZNZXRhRGF0YSA9IEVYSUYuZ2V0QWxsVGFncyhpbWFnZSksXG4gICAgICAgICAgICAgICAgICAgIGV4aWZPcmllbnRhdGlvbiA9IGFsbEV4aWZNZXRhRGF0YS5PcmllbnRhdGlvbjtcblxuICAgICAgICAgICAgICAgIGlmIChleGlmT3JpZW50YXRpb24pIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIS9eWzEtOF0kLy50ZXN0KGV4aWZPcmllbnRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignb3JpZW50YXRpb24gc2hvdWxkIGJlIFsxLThdJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVnID0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN4ID0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN5ID0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBudW1iZXIgPSBpbWFnZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbnVtYmVyID0gaW1hZ2UuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChbNSwgNiwgNywgOF0uaW5kZXhPZihleGlmT3JpZW50YXRpb24pID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gaW1hZ2Uud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV4aWZPcmllbnRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4ID0gLWltYWdlLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5ID0gLWltYWdlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWcgPSAxODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3kgPSAtaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZyA9IDkwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4ID0gLWltYWdlLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZyA9IDI3MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoWzIsIDQsIDUsIDddLmluZGV4T2YoZXhpZk9yaWVudGF0aW9uKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHdpZHRoLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zY2FsZSgtMSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjdHgucm90YXRlKGRlZyAvIDE4MCAqIE1hdGguUEkpO1xuICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlLCBjeCwgY3kpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGltZy53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBpbWcuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGltZyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGltYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG4iXX0=