ngx-image-crop
Version:
Ngx image cropper module.
95 lines (87 loc) • 8.72 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) :
typeof define === 'function' && define.amd ? define('ngx-image-crop', ['exports', '@angular/core'], factory) :
(factory((global['ngx-image-crop'] = {}),global.ng.core));
}(this, (function (exports,core) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var ImageCropService = (function () {
function ImageCropService() {
}
/**
* Crop given image according to given config parameter and returns cropped image.
* @param {?} image
* @param {?} config
* @return {?}
*/
ImageCropService.prototype.crop = /**
* Crop given image according to given config parameter and returns cropped image.
* @param {?} image
* @param {?} config
* @return {?}
*/
function (image, config) {
// if config parameter not provided return image.
if (!config) {
console.warn("ImageCropService.crop() => 'config' parameter not provided. Returning raw image.");
return;
}
// init config
config.x = config.x ? config.x : 0;
config.y = config.y ? config.y : 0;
config.width = config.width ? config.width : 0;
config.height = config.height ? config.height : 0;
config.angle = config.angle ? config.angle : 0;
config.quality = config.quality ? config.quality : 1;
/** @type {?} */
var canvas = document.createElement('canvas');
/** @type {?} */
var context = canvas.getContext('2d');
// set canvas dimensions.
canvas.width = config.width;
canvas.height = config.height;
// crop image.
context.save();
context.translate(config.width / 2, config.height / 2);
context.rotate(config.angle * 0.0174533);
context.translate(-(config.x + config.width / 2), -(config.y + config.height / 2));
context.drawImage(image, 0, 0);
context.restore();
return canvas.toDataURL('image/jpeg', config.quality);
};
ImageCropService.decorators = [
{ type: core.Injectable }
];
return ImageCropService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var ImageCropModule = (function () {
function ImageCropModule() {
}
ImageCropModule.decorators = [
{ type: core.NgModule, args: [{
providers: [
ImageCropService
]
},] }
];
return ImageCropModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
exports.ImageCropModule = ImageCropModule;
exports.ImageCropService = ImageCropService;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWltYWdlLWNyb3AudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtaW1hZ2UtY3JvcC9saWIvaW1hZ2UtY3JvcC9zZXJ2aWNlcy9pbWFnZS1jcm9wL2ltYWdlLWNyb3Auc2VydmljZS50cyIsIm5nOi8vbmd4LWltYWdlLWNyb3AvbGliL2ltYWdlLWNyb3AvaW1hZ2UtY3JvcC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEltYWdlQ3JvcENvbmZpZyB9IGZyb20gXCIuLi8uLi9pbWFnZS1jcm9wLWNvbmZpZy5pbnRlcmZhY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEltYWdlQ3JvcFNlcnZpY2Uge1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICogQ3JvcCBnaXZlbiBpbWFnZSBhY2NvcmRpbmcgdG8gZ2l2ZW4gY29uZmlnIHBhcmFtZXRlciBhbmQgcmV0dXJucyBjcm9wcGVkIGltYWdlLlxyXG4gICAgKiBAcGFyYW0gaW1hZ2UgXHJcbiAgICAqIEBwYXJhbSBjb25maWcgXHJcbiAgICAqL1xyXG4gICAgcHVibGljIGNyb3AoaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnR8SFRNTFZpZGVvRWxlbWVudHxIVE1MQ2FudmFzRWxlbWVudHxJbWFnZUJpdG1hcCwgY29uZmlnOiBJbWFnZUNyb3BDb25maWcpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vIGlmIGNvbmZpZyBwYXJhbWV0ZXIgbm90IHByb3ZpZGVkIHJldHVybiBpbWFnZS5cclxuICAgICAgICBpZiAoIWNvbmZpZykge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEltYWdlQ3JvcFNlcnZpY2UuY3JvcCgpID0+ICdjb25maWcnIHBhcmFtZXRlciBub3QgcHJvdmlkZWQuIFJldHVybmluZyByYXcgaW1hZ2UuYCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gaW5pdCBjb25maWdcclxuICAgICAgICBjb25maWcueCA9IGNvbmZpZy54ID8gY29uZmlnLnggOiAwO1xyXG4gICAgICAgIGNvbmZpZy55ID0gY29uZmlnLnkgPyBjb25maWcueSA6IDA7XHJcbiAgICAgICAgY29uZmlnLndpZHRoID0gY29uZmlnLndpZHRoID8gY29uZmlnLndpZHRoIDogMDtcclxuICAgICAgICBjb25maWcuaGVpZ2h0ID0gY29uZmlnLmhlaWdodCA/IGNvbmZpZy5oZWlnaHQgOiAwO1xyXG4gICAgICAgIGNvbmZpZy5hbmdsZSA9IGNvbmZpZy5hbmdsZSA/IGNvbmZpZy5hbmdsZSA6IDA7XHJcbiAgICAgICAgY29uZmlnLnF1YWxpdHkgPSBjb25maWcucXVhbGl0eSA/IGNvbmZpZy5xdWFsaXR5IDogMTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBjcmVhdGUgYW4gb2Zmc2NyZWVuIGNhbnZhcy5cclxuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gc2V0IGNhbnZhcyBkaW1lbnNpb25zLlxyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IGNvbmZpZy53aWR0aDtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gY29uZmlnLmhlaWdodDtcclxuICAgICAgICBcclxuICAgICAgICAvLyBjcm9wIGltYWdlLlxyXG4gICAgICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGNvbmZpZy53aWR0aCAvIDIsIGNvbmZpZy5oZWlnaHQgLyAyKTtcclxuICAgICAgICBjb250ZXh0LnJvdGF0ZShjb25maWcuYW5nbGUgKiAwLjAxNzQ1MzMpO1xyXG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC0oY29uZmlnLnggKyBjb25maWcud2lkdGggLyAyKSwgLShjb25maWcueSArIGNvbmZpZy5oZWlnaHQgLyAyKSk7XHJcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgY29uZmlnLnF1YWxpdHkpO1xyXG4gICAgfVxyXG59XHJcbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSW1hZ2VDcm9wU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ltYWdlLWNyb3AvaW1hZ2UtY3JvcC5zZXJ2aWNlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgSW1hZ2VDcm9wU2VydmljZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1hZ2VDcm9wTW9kdWxlIHsgfVxyXG4iXSwibmFtZXMiOlsiSW5qZWN0YWJsZSIsIk5nTW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztRQVdXLCtCQUFJOzs7Ozs7c0JBQUMsS0FBc0UsRUFBRSxNQUF1Qjs7Z0JBRXZHLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO29CQUNqRyxPQUFPO2lCQUNWOztnQkFHRCxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25DLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDOztnQkFHckQsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Z0JBQ2hELElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7O2dCQUd4QyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQzs7Z0JBRzlCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFbEIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7OztvQkF2QzdEQSxlQUFVOzsrQkFIWDs7Ozs7OztBQ0FBOzs7O29CQUdDQyxhQUFRLFNBQUM7d0JBQ04sU0FBUyxFQUFFOzRCQUNQLGdCQUFnQjt5QkFDbkI7cUJBQ0o7OzhCQVBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=