UNPKG

@fivethree/core

Version:
83 lines 7.58 kB
/** * @fileoverview added by tsickle * Generated from: lib/gallery/image.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; var ImageService = /** @class */ (function () { function ImageService() { } /** * @param {?} imgEl * @return {?} */ ImageService.prototype.getAverageRGB = /** * @param {?} imgEl * @return {?} */ function (imgEl) { /** @type {?} */ var blockSize = 5; /** @type {?} */ var // only visit every 5 pixels defaultRGB = { r: 0, g: 0, b: 0 }; /** @type {?} */ var // for non-supporting envs canvas = document.createElement('canvas'); /** @type {?} */ var context = canvas.getContext && canvas.getContext('2d'); /** @type {?} */ var rgb = { r: 0, g: 0, b: 0 }; /** @type {?} */ var data; /** @type {?} */ var width; /** @type {?} */ var height; /** @type {?} */ var length; /** @type {?} */ var i = -4; /** @type {?} */ var count = 0; if (!context) { return "rgb(" + defaultRGB.r + "," + defaultRGB.g + "," + defaultRGB.b + ")"; } height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height; width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width; context.drawImage(imgEl, 0, 0); try { data = context.getImageData(0, 0, width, height); } catch (e) { /* security error, img on diff domain */ return "rgb(" + defaultRGB.r + "," + defaultRGB.g + "," + defaultRGB.b + ")"; } length = data.data.length; while ((i += blockSize * 4) < length) { ++count; rgb.r += data.data[i]; rgb.g += data.data[i + 1]; rgb.b += data.data[i + 2]; } // ~~ used to floor values rgb.r = Math.floor(rgb.r / count); rgb.g = Math.floor(rgb.g / count); rgb.b = Math.floor(rgb.b / count); return "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")"; }; ImageService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ ImageService.ctorParameters = function () { return []; }; /** @nocollapse */ ImageService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ImageService_Factory() { return new ImageService(); }, token: ImageService, providedIn: "root" }); return ImageService; }()); export { ImageService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXZldGhyZWUvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9nYWxsZXJ5L2ltYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQztJQUlFO0lBQWUsQ0FBQzs7Ozs7SUFFaEIsb0NBQWE7Ozs7SUFBYixVQUFjLEtBQUs7O1lBQ1gsU0FBUyxHQUFHLENBQUM7O1lBQUUsNEJBQTRCO1FBQy9DLFVBQVUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFOztZQUFFLDBCQUEwQjtRQUM3RCxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7O1lBQ3pDLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDOztZQUN0RCxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTs7WUFFeEIsSUFBSTs7WUFDTixLQUFLOztZQUNMLE1BQU07O1lBQ04sTUFBTTs7WUFDTixDQUFDLEdBQUcsQ0FBQyxDQUFDOztZQUNOLEtBQUssR0FBRyxDQUFDO1FBRVgsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sU0FBTyxVQUFVLENBQUMsQ0FBQyxTQUFJLFVBQVUsQ0FBQyxDQUFDLFNBQUksVUFBVSxDQUFDLENBQUMsTUFBRyxDQUFDO1NBQy9EO1FBRUQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNO1lBQ3BCLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzVELEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSztZQUNsQixLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztRQUV6RCxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0IsSUFBSTtZQUNGLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVix3Q0FBd0M7WUFFeEMsT0FBTyxTQUFPLFVBQVUsQ0FBQyxDQUFDLFNBQUksVUFBVSxDQUFDLENBQUMsU0FBSSxVQUFVLENBQUMsQ0FBQyxNQUFHLENBQUM7U0FDL0Q7UUFFRCxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFMUIsT0FBTyxDQUFDLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFO1lBQ3BDLEVBQUUsS0FBSyxDQUFDO1lBQ1IsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMzQjtRQUVELDBCQUEwQjtRQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNsQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNsQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUVsQyxPQUFPLFNBQU8sR0FBRyxDQUFDLENBQUMsU0FBSSxHQUFHLENBQUMsQ0FBQyxTQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQUcsQ0FBQztJQUMzQyxDQUFDOztnQkF0REYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7Ozs7dUJBSkQ7Q0F5REMsQUF2REQsSUF1REM7U0FwRFksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGdldEF2ZXJhZ2VSR0IoaW1nRWwpIHtcbiAgICBjb25zdCBibG9ja1NpemUgPSA1LCAvLyBvbmx5IHZpc2l0IGV2ZXJ5IDUgcGl4ZWxzXG4gICAgICBkZWZhdWx0UkdCID0geyByOiAwLCBnOiAwLCBiOiAwIH0sIC8vIGZvciBub24tc3VwcG9ydGluZyBlbnZzXG4gICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSxcbiAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCAmJiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSxcbiAgICAgIHJnYiA9IHsgcjogMCwgZzogMCwgYjogMCB9O1xuXG4gICAgbGV0IGRhdGEsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIGkgPSAtNCxcbiAgICAgIGNvdW50ID0gMDtcblxuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIGByZ2IoJHtkZWZhdWx0UkdCLnJ9LCR7ZGVmYXVsdFJHQi5nfSwke2RlZmF1bHRSR0IuYn0pYDtcbiAgICB9XG5cbiAgICBoZWlnaHQgPSBjYW52YXMuaGVpZ2h0ID1cbiAgICAgIGltZ0VsLm5hdHVyYWxIZWlnaHQgfHwgaW1nRWwub2Zmc2V0SGVpZ2h0IHx8IGltZ0VsLmhlaWdodDtcbiAgICB3aWR0aCA9IGNhbnZhcy53aWR0aCA9XG4gICAgICBpbWdFbC5uYXR1cmFsV2lkdGggfHwgaW1nRWwub2Zmc2V0V2lkdGggfHwgaW1nRWwud2lkdGg7XG5cbiAgICBjb250ZXh0LmRyYXdJbWFnZShpbWdFbCwgMCwgMCk7XG5cbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8qIHNlY3VyaXR5IGVycm9yLCBpbWcgb24gZGlmZiBkb21haW4gKi9cblxuICAgICAgcmV0dXJuIGByZ2IoJHtkZWZhdWx0UkdCLnJ9LCR7ZGVmYXVsdFJHQi5nfSwke2RlZmF1bHRSR0IuYn0pYDtcbiAgICB9XG5cbiAgICBsZW5ndGggPSBkYXRhLmRhdGEubGVuZ3RoO1xuXG4gICAgd2hpbGUgKChpICs9IGJsb2NrU2l6ZSAqIDQpIDwgbGVuZ3RoKSB7XG4gICAgICArK2NvdW50O1xuICAgICAgcmdiLnIgKz0gZGF0YS5kYXRhW2ldO1xuICAgICAgcmdiLmcgKz0gZGF0YS5kYXRhW2kgKyAxXTtcbiAgICAgIHJnYi5iICs9IGRhdGEuZGF0YVtpICsgMl07XG4gICAgfVxuXG4gICAgLy8gfn4gdXNlZCB0byBmbG9vciB2YWx1ZXNcbiAgICByZ2IuciA9IE1hdGguZmxvb3IocmdiLnIgLyBjb3VudCk7XG4gICAgcmdiLmcgPSBNYXRoLmZsb29yKHJnYi5nIC8gY291bnQpO1xuICAgIHJnYi5iID0gTWF0aC5mbG9vcihyZ2IuYiAvIGNvdW50KTtcblxuICAgIHJldHVybiBgcmdiKCR7cmdiLnJ9LCR7cmdiLmd9LCR7cmdiLmJ9KWA7XG4gIH1cbn1cbiJdfQ==