UNPKG

ng2-pica

Version:

Angular wrapper for pica to resize images.

1 lines 3.42 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("pica/dist/pica"),require("exifr/dist/mini.legacy.umd")):"function"==typeof define&&define.amd?define(["exports","@angular/core","rxjs","pica/dist/pica","exifr/dist/mini.legacy.umd"],t):t(e["ng2-pica"]=e["ng2-pica"]||{},e.ng.core,e.Rx,e.pica,e.exifr)}(this,function(e,t,n,i,r){"use strict";i="default"in i?i.default:i;var a=function(){function e(){}return e.prototype.getOrientedImage=function(e){return new Promise(function(t){var n;r.orientation(e).catch(function(e){}).then(function(i){if(1!=i){var r=document.createElement("canvas"),a=r.getContext("2d"),o=e.width,c=e.height,u=0,s=0,d=0;switch(i){case 3:case 4:u=-e.width,s=-e.height,d=180;break;case 5:case 6:o=e.height,c=e.width,s=-e.height,d=90;break;case 7:case 8:o=e.height,c=e.width,u=-e.width,d=270}r.width=o,r.height=c,[2,4,5,7].indexOf(i)>-1&&(a.translate(o,0),a.scale(-1,1)),a.rotate(d*Math.PI/180),a.drawImage(e,u,s),n=document.createElement("img"),n.width=o,n.height=c,n.addEventListener("load",function(){t(n)}),n.src=r.toDataURL("image/png")}else t(e)})})},e.decorators=[{type:t.Injectable}],e}(),o=function(){function e(e){this.imageExifService=e}return e.prototype.resize=function(e,t,i,r){void 0===r&&(r=!1);for(var a=new n.Subject,o=0;o<e.length;o++)this.resizeFile(e[o],t,i,r).then(function(e){a.next(e)}).catch(function(e){a.error(e)});return a.asObservable()},e.prototype.resizeCanvas=function(e,t,n){return new Promise(function(r,a){var o=new i;o&&o.resize||(o=new window.pica),o.resize(e,t,n).then(function(e){r(e)},function(e){a(e)})})},e.prototype.resizeBuffer=function(e){return new Promise(function(t,n){var r=new i;r&&r.resizeBuffer||(r=new window.pica),r.resizeBuffer(e).then(function(e){t(e)},function(e){n(e)})})},e.prototype.resizeFile=function(e,t,n,i){var r=this;return void 0===i&&(i=!1),new Promise(function(a,o){var c=document.createElement("canvas"),u=c.getContext("2d"),s=new Image;s.onload=function(){r.imageExifService.getOrientedImage(s).then(function(d){window.URL.revokeObjectURL(s.src),c.width=d.width,c.height=d.height,u.drawImage(d,0,0);var f=u.getImageData(0,0,d.width,d.height);if(i){var h=Math.min(t/f.width,n/f.height);t=Math.round(f.width*h),n=Math.round(f.height*h)}var g=!0;("image/jpeg"===e.type||"image/png"===e.type&&!r.isImgUsingAlpha(f))&&(g=!1,u=c.getContext("2d",{alpha:!1}),u.drawImage(d,0,0));var p=document.createElement("canvas");p.width=t,p.height=n,r.resizeCanvas(c,p,{alpha:g}).then(function(t){t.toBlob(function(t){var n=r.generateResultFile(t,e.name,e.type,(new Date).getTime());a(n)},e.type)}).catch(function(e){o(e)})})},s.src=window.URL.createObjectURL(e)})},e.prototype.isImgUsingAlpha=function(e){for(var t=0;t<e.data.length;t+=4)if(255!==e.data[t+3])return!0;return!1},e.prototype.generateResultFile=function(e,t,n,i){var r=new Blob([e],{type:n});return this.blobToFile(r,t,i)},e.prototype.blobToFile=function(e,t,n){var i=e;return i.name=t,i.lastModified=n,i},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:a,decorators:[{type:t.Inject,args:[t.forwardRef(function(){return a})]}]}]},e}(),c=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{providers:[{provide:o,useClass:o},{provide:a,useClass:a}]}]}],e}();e.Ng2PicaService=o,e.Ng2PicaModule=c,e.ImgExifService=a,Object.defineProperty(e,"__esModule",{value:!0})});