lintry

增加本地图片压缩后上传功能以及测试样例

...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
27 <div id="preview" style="padding:1em"> 27 <div id="preview" style="padding:1em">
28 28
29 </div> 29 </div>
30 + <script src="lib/lrz/lrz.bundle.js"></script>
30 <script> 31 <script>
31 $(document).ready(function() { 32 $(document).ready(function() {
32 function Publisher(options) { 33 function Publisher(options) {
...@@ -34,7 +35,7 @@ ...@@ -34,7 +35,7 @@
34 return new Publisher(); 35 return new Publisher();
35 } 36 }
36 37
37 - var $editor 38 + var $editor;
38 function init(editor) { 39 function init(editor) {
39 $editor = $(editor); 40 $editor = $(editor);
40 var ImageGallery = function (context) { 41 var ImageGallery = function (context) {
...@@ -102,11 +103,14 @@ ...@@ -102,11 +103,14 @@
102 if (image.size <= 102400) { 103 if (image.size <= 102400) {
103 $editor.summernote('insertImages', [image]); 104 $editor.summernote('insertImages', [image]);
104 } else { 105 } else {
105 - data = new FormData(); 106 + lrz(image, {
106 - data.append("file", image); 107 + width: 1024
107 - 108 + })
109 + .then(function (rst) {
110 + rst.formData.append('fileLen', rst.fileLen);
111 + rst.formData.append('xxx', '我是其他参数');
108 $.ajax({ 112 $.ajax({
109 - data: data, 113 + data: rst.formData,
110 type: "POST", 114 type: "POST",
111 url: "/upload", 115 url: "/upload",
112 cache: false, 116 cache: false,
...@@ -125,6 +129,7 @@ ...@@ -125,6 +129,7 @@
125 } 129 }
126 } 130 }
127 }); 131 });
132 + });
128 } 133 }
129 } 134 }
130 }, 135 },
......
1 +webpackJsonp([1],{6:function(t,e,a){var r,n;!function(){function a(t){var e=t.naturalWidth,a=t.naturalHeight;if(e*a>1048576){var r=document.createElement("canvas");r.width=r.height=1;var n=r.getContext("2d");return n.drawImage(t,-e+1,0),0===n.getImageData(0,0,1,1).data[3]}return!1}function i(t,e,a){var r=document.createElement("canvas");r.width=1,r.height=a;var n=r.getContext("2d");n.drawImage(t,0,0);for(var i=n.getImageData(0,0,1,a).data,o=0,c=a,s=a;s>o;){var h=i[4*(s-1)+3];0===h?c=s:o=s,s=c+o>>1}var d=s/a;return 0===d?1:d}function o(t,e,a){var r=document.createElement("canvas");return c(t,r,e,a),r.toDataURL("image/jpeg",e.quality||.8)}function c(t,e,r,n){var o=t.naturalWidth,c=t.naturalHeight,h=r.width,d=r.height,g=e.getContext("2d");g.save(),s(e,g,h,d,r.orientation);var l=a(t);l&&(o/=2,c/=2);var u=1024,w=document.createElement("canvas");w.width=w.height=u;for(var f=w.getContext("2d"),v=n?i(t,o,c):1,m=Math.ceil(u*h/o),b=Math.ceil(u*d/c/v),L=0,I=0;c>L;){for(var p=0,R=0;o>p;)f.clearRect(0,0,u,u),f.drawImage(t,-p,-L),g.drawImage(w,0,0,u,u,R,I,m,b),p+=u,R+=m;L+=u,I+=b}g.restore(),w=f=null}function s(t,e,a,r,n){switch(n){case 5:case 6:case 7:case 8:t.width=r,t.height=a;break;default:t.width=a,t.height=r}switch(n){case 2:e.translate(a,0),e.scale(-1,1);break;case 3:e.translate(a,r),e.rotate(Math.PI);break;case 4:e.translate(0,r),e.scale(1,-1);break;case 5:e.rotate(.5*Math.PI),e.scale(1,-1);break;case 6:e.rotate(.5*Math.PI),e.translate(0,-r);break;case 7:e.rotate(.5*Math.PI),e.translate(a,-r),e.scale(-1,1);break;case 8:e.rotate(-.5*Math.PI),e.translate(-a,0)}}function h(t){if(window.Blob&&t instanceof Blob){var e=new Image,a=window.URL&&window.URL.createObjectURL?window.URL:window.webkitURL&&window.webkitURL.createObjectURL?window.webkitURL:null;if(!a)throw Error("No createObjectURL function found to create blob url");e.src=a.createObjectURL(t),this.blob=t,t=e}if(!t.naturalWidth&&!t.naturalHeight){var r=this;t.onload=function(){var t=r.imageLoadListeners;if(t){r.imageLoadListeners=null;for(var e=0,a=t.length;a>e;e++)t[e]()}},this.imageLoadListeners=[]}this.srcImage=t}h.prototype.render=function(t,e,a){if(this.imageLoadListeners){var r=this;return void this.imageLoadListeners.push(function(){r.render(t,e,a)})}e=e||{};var n=this.srcImage,i=n.src,s=i.length,h=n.naturalWidth,d=n.naturalHeight,g=e.width,l=e.height,u=e.maxWidth,w=e.maxHeight,f=this.blob&&"image/jpeg"===this.blob.type||0===i.indexOf("data:image/jpeg")||i.indexOf(".jpg")===s-4||i.indexOf(".jpeg")===s-5;g&&!l?l=d*g/h<<0:l&&!g?g=h*l/d<<0:(g=h,l=d),u&&g>u&&(g=u,l=d*g/h<<0),w&&l>w&&(l=w,g=h*l/d<<0);var v={width:g,height:l};for(var m in e)v[m]=e[m];var b=t.tagName.toLowerCase();"img"===b?t.src=o(this.srcImage,v,f):"canvas"===b&&c(this.srcImage,t,v,f),"function"==typeof this.onrender&&this.onrender(t),a&&a()},r=[],n=function(){return h}.apply(e,r),!(void 0!==n&&(t.exports=n))}()}});
2 +//# sourceMappingURL=1.chunk.js.map
...\ No newline at end of file ...\ No newline at end of file
1 +{"version":3,"sources":["webpack:///1.chunk.js","webpack:///src/lib/megapix-image.js"],"names":["webpackJsonp",6,"module","exports","__webpack_require__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","detectSubsampling","img","iw","naturalWidth","ih","naturalHeight","canvas","document","createElement","width","height","ctx","getContext","drawImage","getImageData","data","detectVerticalSquash","sy","ey","py","alpha","ratio","renderImageToDataURL","options","doSquash","renderImageToCanvas","toDataURL","quality","save","transformCoordinate","orientation","subsampled","d","tmpCanvas","tmpCtx","vertSquashRatio","dw","Math","ceil","dh","dy","sx","dx","clearRect","restore","translate","scale","rotate","PI","MegaPixImage","srcImage","window","Blob","Image","URL","createObjectURL","webkitURL","Error","src","this","blob","_this","onload","listeners","imageLoadListeners","i","len","length","prototype","render","target","callback","push","srcLength","imgWidth","imgHeight","maxWidth","maxHeight","type","indexOf","opt","k","tagName","toLowerCase","onrender","apply","undefined"],"mappings":"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","file":"1.chunk.js","sourcesContent":["webpackJsonp([1],{\n\n/***/ 6:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n\t * Mega pixel image rendering library for iOS6 Safari\n\t *\n\t * Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel),\n\t * which causes unexpected subsampling when drawing it in canvas.\n\t * By using this library, you can safely render the image with proper stretching.\n\t *\n\t * Copyright (c) 2012 Shinichi Tomita <shinichi.tomita@gmail.com>\n\t * Released under the MIT license\n\t */\n\t(function () {\n\t\n\t /**\n\t * Detect subsampling in loaded image.\n\t * In iOS, larger images than 2M pixels may be subsampled in rendering.\n\t */\n\t function detectSubsampling (img) {\n\t var iw = img.naturalWidth, ih = img.naturalHeight;\n\t if (iw * ih > 1024 * 1024) { // subsampling may happen over megapixel image\n\t var canvas = document.createElement('canvas');\n\t canvas.width = canvas.height = 1;\n\t var ctx = canvas.getContext('2d');\n\t ctx.drawImage(img, -iw + 1, 0);\n\t // subsampled image becomes half smaller in rendering size.\n\t // check alpha channel value to confirm image is covering edge pixel or not.\n\t // if alpha value is 0 image is not covering, hence subsampled.\n\t return ctx.getImageData(0, 0, 1, 1).data[3] === 0;\n\t } else {\n\t return false;\n\t }\n\t }\n\t\n\t /**\n\t * Detecting vertical squash in loaded image.\n\t * Fixes a bug which squash image vertically while drawing into canvas for some images.\n\t */\n\t function detectVerticalSquash (img, iw, ih) {\n\t var canvas = document.createElement('canvas');\n\t canvas.width = 1;\n\t canvas.height = ih;\n\t var ctx = canvas.getContext('2d');\n\t ctx.drawImage(img, 0, 0);\n\t var data = ctx.getImageData(0, 0, 1, ih).data;\n\t // search image edge pixel position in case it is squashed vertically.\n\t var sy = 0;\n\t var ey = ih;\n\t var py = ih;\n\t while (py > sy) {\n\t var alpha = data[(py - 1) * 4 + 3];\n\t if (alpha === 0) {\n\t ey = py;\n\t } else {\n\t sy = py;\n\t }\n\t py = (ey + sy) >> 1;\n\t }\n\t var ratio = (py / ih);\n\t return (ratio === 0) ? 1 : ratio;\n\t }\n\t\n\t /**\n\t * Rendering image element (with resizing) and get its data URL\n\t */\n\t function renderImageToDataURL (img, options, doSquash) {\n\t var canvas = document.createElement('canvas');\n\t renderImageToCanvas(img, canvas, options, doSquash);\n\t return canvas.toDataURL(\"image/jpeg\", options.quality || 0.8);\n\t }\n\t\n\t /**\n\t * Rendering image element (with resizing) into the canvas element\n\t */\n\t function renderImageToCanvas (img, canvas, options, doSquash) {\n\t var iw = img.naturalWidth, ih = img.naturalHeight;\n\t var width = options.width, height = options.height;\n\t var ctx = canvas.getContext('2d');\n\t ctx.save();\n\t transformCoordinate(canvas, ctx, width, height, options.orientation);\n\t var subsampled = detectSubsampling(img);\n\t if (subsampled) {\n\t iw /= 2;\n\t ih /= 2;\n\t }\n\t var d = 1024; // size of tiling canvas\n\t var tmpCanvas = document.createElement('canvas');\n\t tmpCanvas.width = tmpCanvas.height = d;\n\t var tmpCtx = tmpCanvas.getContext('2d');\n\t var vertSquashRatio = doSquash ? detectVerticalSquash(img, iw, ih) : 1;\n\t var dw = Math.ceil(d * width / iw);\n\t var dh = Math.ceil(d * height / ih / vertSquashRatio);\n\t var sy = 0;\n\t var dy = 0;\n\t while (sy < ih) {\n\t var sx = 0;\n\t var dx = 0;\n\t while (sx < iw) {\n\t tmpCtx.clearRect(0, 0, d, d);\n\t tmpCtx.drawImage(img, -sx, -sy);\n\t ctx.drawImage(tmpCanvas, 0, 0, d, d, dx, dy, dw, dh);\n\t sx += d;\n\t dx += dw;\n\t }\n\t sy += d;\n\t dy += dh;\n\t }\n\t ctx.restore();\n\t tmpCanvas = tmpCtx = null;\n\t }\n\t\n\t /**\n\t * Transform canvas coordination according to specified frame size and orientation\n\t * Orientation value is from EXIF tag\n\t */\n\t function transformCoordinate (canvas, ctx, width, height, orientation) {\n\t switch (orientation) {\n\t case 5:\n\t case 6:\n\t case 7:\n\t case 8:\n\t canvas.width = height;\n\t canvas.height = width;\n\t break;\n\t default:\n\t canvas.width = width;\n\t canvas.height = height;\n\t }\n\t switch (orientation) {\n\t case 2:\n\t // horizontal flip\n\t ctx.translate(width, 0);\n\t ctx.scale(-1, 1);\n\t break;\n\t case 3:\n\t // 180 rotate left\n\t ctx.translate(width, height);\n\t ctx.rotate(Math.PI);\n\t break;\n\t case 4:\n\t // vertical flip\n\t ctx.translate(0, height);\n\t ctx.scale(1, -1);\n\t break;\n\t case 5:\n\t // vertical flip + 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.scale(1, -1);\n\t break;\n\t case 6:\n\t // 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.translate(0, -height);\n\t break;\n\t case 7:\n\t // horizontal flip + 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.translate(width, -height);\n\t ctx.scale(-1, 1);\n\t break;\n\t case 8:\n\t // 90 rotate left\n\t ctx.rotate(-0.5 * Math.PI);\n\t ctx.translate(-width, 0);\n\t break;\n\t default:\n\t break;\n\t }\n\t }\n\t\n\t\n\t /**\n\t * MegaPixImage class\n\t */\n\t function MegaPixImage (srcImage) {\n\t if (window.Blob && srcImage instanceof Blob) {\n\t var img = new Image();\n\t var URL = window.URL && window.URL.createObjectURL ? window.URL :\n\t window.webkitURL && window.webkitURL.createObjectURL ? window.webkitURL :\n\t null;\n\t if (!URL) {\n\t throw Error(\"No createObjectURL function found to create blob url\");\n\t }\n\t img.src = URL.createObjectURL(srcImage);\n\t this.blob = srcImage;\n\t srcImage = img;\n\t }\n\t if (!srcImage.naturalWidth && !srcImage.naturalHeight) {\n\t var _this = this;\n\t srcImage.onload = function () {\n\t var listeners = _this.imageLoadListeners;\n\t if (listeners) {\n\t _this.imageLoadListeners = null;\n\t for (var i = 0, len = listeners.length; i < len; i++) {\n\t listeners[i]();\n\t }\n\t }\n\t };\n\t this.imageLoadListeners = [];\n\t }\n\t this.srcImage = srcImage;\n\t }\n\t\n\t /**\n\t * Rendering megapix image into specified target element\n\t */\n\t MegaPixImage.prototype.render = function (target, options, callback) {\n\t if (this.imageLoadListeners) {\n\t var _this = this;\n\t this.imageLoadListeners.push(function () {\n\t _this.render(target, options, callback);\n\t });\n\t return;\n\t }\n\t options = options || {};\n\t var srcImage = this.srcImage,\n\t src = srcImage.src,\n\t srcLength = src.length,\n\t imgWidth = srcImage.naturalWidth, imgHeight = srcImage.naturalHeight,\n\t width = options.width, height = options.height,\n\t maxWidth = options.maxWidth, maxHeight = options.maxHeight,\n\t doSquash = this.blob && this.blob.type === 'image/jpeg' ||\n\t src.indexOf('data:image/jpeg') === 0 ||\n\t src.indexOf('.jpg') === srcLength - 4 ||\n\t src.indexOf('.jpeg') === srcLength - 5;\n\t if (width && !height) {\n\t height = (imgHeight * width / imgWidth) << 0;\n\t } else if (height && !width) {\n\t width = (imgWidth * height / imgHeight) << 0;\n\t } else {\n\t width = imgWidth;\n\t height = imgHeight;\n\t }\n\t if (maxWidth && width > maxWidth) {\n\t width = maxWidth;\n\t height = (imgHeight * width / imgWidth) << 0;\n\t }\n\t if (maxHeight && height > maxHeight) {\n\t height = maxHeight;\n\t width = (imgWidth * height / imgHeight) << 0;\n\t }\n\t var opt = {width: width, height: height};\n\t for (var k in options) opt[k] = options[k];\n\t\n\t var tagName = target.tagName.toLowerCase();\n\t if (tagName === 'img') {\n\t target.src = renderImageToDataURL(this.srcImage, opt, doSquash);\n\t } else if (tagName === 'canvas') {\n\t renderImageToCanvas(this.srcImage, target, opt, doSquash);\n\t }\n\t if (typeof this.onrender === 'function') {\n\t this.onrender(target);\n\t }\n\t if (callback) {\n\t callback();\n\t }\n\t };\n\t\n\t /**\n\t * Export class to global\n\t */\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return MegaPixImage;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // for AMD loader\n\t } else {\n\t this.MegaPixImage = MegaPixImage;\n\t }\n\t\n\t})();\n\n\n/***/ }\n\n});\n\n\n/** WEBPACK FOOTER **\n ** 1.chunk.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/megapix-image.js\n **/"],"sourceRoot":""}
...\ No newline at end of file ...\ No newline at end of file
1 +webpackJsonp([2],{7:function(r,a){function n(r){function a(r){for(var a=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;64>n;n++){var o=b((a[n]*r+50)/100);1>o?o=1:o>255&&(o=255),C[I[n]]=o}for(var f=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],e=0;64>e;e++){var t=b((f[e]*r+50)/100);1>t?t=1:t>255&&(t=255),j[I[e]]=t}for(var v=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],i=0,u=0;8>u;u++)for(var c=0;8>c;c++)_[i]=1/(C[I[i]]*v[u]*v[c]*8),k[i]=1/(j[I[i]]*v[u]*v[c]*8),i++}function n(r,a){for(var n=0,o=0,f=new Array,e=1;16>=e;e++){for(var t=1;t<=r[e];t++)f[a[o]]=[],f[a[o]][0]=n,f[a[o]][1]=e,o++,n++;n*=2}return f}function o(){p=n(K,L),l=n(Q,R),D=n(O,P),T=n(V,W)}function f(){for(var r=1,a=2,n=1;15>=n;n++){for(var o=r;a>o;o++)J[32767+o]=n,x[32767+o]=[],x[32767+o][1]=n,x[32767+o][0]=o;for(var f=-(a-1);-r>=f;f++)J[32767+f]=n,x[32767+f]=[],x[32767+f][1]=n,x[32767+f][0]=a-1+f;r<<=1,a<<=1}}function e(){for(var r=0;256>r;r++)H[r]=19595*r,H[r+256>>0]=38470*r,H[r+512>>0]=7471*r+32768,H[r+768>>0]=-11059*r,H[r+1024>>0]=-21709*r,H[r+1280>>0]=32768*r+8421375,H[r+1536>>0]=-27439*r,H[r+1792>>0]=-5329*r}function t(r){for(var a=r[0],n=r[1]-1;n>=0;)a&1<<n&&(q|=1<<z),n--,z--,0>z&&(255==q?(v(255),v(0)):v(q),z=7,q=0)}function v(r){U.push(G[r])}function i(r){v(r>>8&255),v(255&r)}function u(r,a){var n,o,f,e,t,v,i,u,c,w=0;const y=8,A=64;for(c=0;y>c;++c){n=r[w],o=r[w+1],f=r[w+2],e=r[w+3],t=r[w+4],v=r[w+5],i=r[w+6],u=r[w+7];var h=n+u,d=n-u,g=o+i,s=o-i,m=f+v,p=f-v,l=e+t,D=e-t,T=h+l,M=h-l,b=g+m,C=g-m;r[w]=T+b,r[w+4]=T-b;var j=.707106781*(C+M);r[w+2]=M+j,r[w+6]=M-j,T=D+p,b=p+s,C=s+d;var _=.382683433*(T-C),k=.5411961*T+_,x=1.306562965*C+_,J=.707106781*b,S=d+J,U=d-J;r[w+5]=U+k,r[w+3]=U-k,r[w+1]=S+x,r[w+7]=S-x,w+=8}for(w=0,c=0;y>c;++c){n=r[w],o=r[w+8],f=r[w+16],e=r[w+24],t=r[w+32],v=r[w+40],i=r[w+48],u=r[w+56];var q=n+u,z=n-u,B=o+i,E=o-i,F=f+v,G=f-v,H=e+t,I=e-t,K=q+H,L=q-H,O=B+F,P=B-F;r[w]=K+O,r[w+32]=K-O;var Q=.707106781*(P+L);r[w+16]=L+Q,r[w+48]=L-Q,K=I+G,O=G+E,P=E+z;var R=.382683433*(K-P),V=.5411961*K+R,W=1.306562965*P+R,X=.707106781*O,Y=z+X,Z=z-X;r[w+40]=Z+V,r[w+24]=Z-V,r[w+8]=Y+W,r[w+56]=Y-W,w++}var $;for(c=0;A>c;++c)$=r[c]*a[c],N[c]=$>0?$+.5|0:$-.5|0;return N}function c(){i(65504),i(16),v(74),v(70),v(73),v(70),v(0),v(1),v(1),v(0),i(1),i(1),v(0),v(0)}function w(r,a){i(65472),i(17),v(8),i(a),i(r),v(3),v(1),v(17),v(0),v(2),v(17),v(1),v(3),v(17),v(1)}function y(){i(65499),i(132),v(0);for(var r=0;64>r;r++)v(C[r]);v(1);for(var a=0;64>a;a++)v(j[a])}function A(){i(65476),i(418),v(0);for(var r=0;16>r;r++)v(K[r+1]);for(var a=0;11>=a;a++)v(L[a]);v(16);for(var n=0;16>n;n++)v(O[n+1]);for(var o=0;161>=o;o++)v(P[o]);v(1);for(var f=0;16>f;f++)v(Q[f+1]);for(var e=0;11>=e;e++)v(R[e]);v(17);for(var t=0;16>t;t++)v(V[t+1]);for(var u=0;161>=u;u++)v(W[u])}function h(){i(65498),i(12),v(3),v(1),v(0),v(2),v(17),v(3),v(17),v(0),v(63),v(0)}function d(r,a,n,o,f){var e,v=f[0],i=f[240];const c=16,w=63,y=64;for(var A=u(r,a),h=0;y>h;++h)S[I[h]]=A[h];var d=S[0]-n;n=S[0],0==d?t(o[0]):(e=32767+d,t(o[J[e]]),t(x[e]));for(var g=63;g>0&&0==S[g];g--);if(0==g)return t(v),n;for(var s,m=1;g>=m;){for(var p=m;0==S[m]&&g>=m;++m);var l=m-p;if(l>=c){s=l>>4;for(var D=1;s>=D;++D)t(i);l=15&l}e=32767+S[m],t(f[(l<<4)+J[e]]),t(x[e]),m++}return g!=w&&t(v),n}function g(){for(var r=String.fromCharCode,a=0;256>a;a++)G[a]=r(a)}function s(r){if(0>=r&&(r=1),r>100&&(r=100),M!=r){var n=0;n=50>r?Math.floor(5e3/r):Math.floor(200-2*r),a(n),M=r}}function m(){var a=(new Date).getTime();r||(r=50),g(),o(),f(),e(),s(r);(new Date).getTime()-a}var p,l,D,T,M,b=(Math.round,Math.floor),C=new Array(64),j=new Array(64),_=new Array(64),k=new Array(64),x=new Array(65535),J=new Array(65535),N=new Array(64),S=new Array(64),U=[],q=0,z=7,B=new Array(64),E=new Array(64),F=new Array(64),G=new Array(256),H=new Array(2048),I=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],K=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],L=[0,1,2,3,4,5,6,7,8,9,10,11],O=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],P=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],Q=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],R=[0,1,2,3,4,5,6,7,8,9,10,11],V=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],W=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];this.encode=function(r,a,n){var o=(new Date).getTime();a&&s(a),U=new Array,q=0,z=7,i(65496),c(),y(),w(r.width,r.height),A(),h();var f=0,e=0,v=0;q=0,z=7,this.encode.displayName="_encode_";for(var u,g,m,M,b,C,j,x,J,N=r.data,S=r.width,G=r.height,I=4*S,K=0;G>K;){for(u=0;I>u;){for(b=I*K+u,C=b,j=-1,x=0,J=0;64>J;J++)x=J>>3,j=4*(7&J),C=b+x*I+j,K+x>=G&&(C-=I*(K+1+x-G)),u+j>=I&&(C-=u+j-I+4),g=N[C++],m=N[C++],M=N[C++],B[J]=(H[g]+H[m+256>>0]+H[M+512>>0]>>16)-128,E[J]=(H[g+768>>0]+H[m+1024>>0]+H[M+1280>>0]>>16)-128,F[J]=(H[g+1280>>0]+H[m+1536>>0]+H[M+1792>>0]>>16)-128;f=d(B,_,f,p,D),e=d(E,k,e,l,T),v=d(F,k,v,l,T),u+=32}K+=8}if(z>=0){var L=[];L[1]=z+1,L[0]=(1<<z+1)-1,t(L)}if(i(65497),n){for(var O=U.length,P=new Uint8Array(O),Q=0;O>Q;Q++)P[Q]=U[Q].charCodeAt();U=[];(new Date).getTime()-o;return P}var R="data:image/jpeg;base64,"+btoa(U.join(""));U=[];(new Date).getTime()-o;return R},m()}r.exports=n}});
2 +//# sourceMappingURL=2.chunk.js.map
...\ No newline at end of file ...\ No newline at end of file
1 +{"version":3,"sources":["webpack:///2.chunk.js","webpack:///src/lib/jpeg_encoder_basic.js"],"names":["webpackJsonp",7,"module","exports","JPEGEncoder","l","M","ag","af","ae","aj","k","O","i","ah","ad","ai","K","ac","ab","ak","aa","d","Z","q","Array","W","u","g","c","h","v","Y","G","w","E","T","J","B","z","m","n","V","C","X","t","a","F","j","push","e","p","N","aZ","ap","aL","aK","aJ","aI","aH","aD","aC","aB","aR","aN","aq","aY","aO","aX","aP","aU","aQ","aT","aS","an","am","al","ax","at","aw","au","av","ar","az","aG","aW","ao","aV","ay","aF","aM","a1","a0","aA","aE","P","b","r","D","H","I","L","S","y","String","fromCharCode","R","x","Math","floor","Q","Date","getTime","round","A","f","U","this","encode","width","height","displayName","data","length","Uint8Array","charCodeAt","btoa","join"],"mappings":"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","file":"2.chunk.js","sourcesContent":["webpackJsonp([2],{\n\n/***/ 7:\n/***/ function(module, exports) {\n\n\tfunction JPEGEncoder (l) {\n\t var o = this;\n\t var s = Math.round;\n\t var k = Math.floor;\n\t var O = new Array(64);\n\t var K = new Array(64);\n\t var d = new Array(64);\n\t var Z = new Array(64);\n\t var u;\n\t var h;\n\t var G;\n\t var T;\n\t var n = new Array(65535);\n\t var m = new Array(65535);\n\t var P = new Array(64);\n\t var S = new Array(64);\n\t var j = [];\n\t var t = 0;\n\t var a = 7;\n\t var A = new Array(64);\n\t var f = new Array(64);\n\t var U = new Array(64);\n\t var e = new Array(256);\n\t var C = new Array(2048);\n\t var x;\n\t var i = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\n\t var g = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];\n\t var c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t var w = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125];\n\t var E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\t var v = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0];\n\t var Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t var J = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119];\n\t var B = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\t\n\t function M (ag) {\n\t var af = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99];\n\t for (var ae = 0; ae < 64; ae++) {\n\t var aj = k((af[ae] * ag + 50) / 100);\n\t if (aj < 1) {\n\t aj = 1\n\t } else {\n\t if (aj > 255) {\n\t aj = 255\n\t }\n\t }\n\t O[i[ae]] = aj\n\t }\n\t var ah = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99];\n\t for (var ad = 0; ad < 64; ad++) {\n\t var ai = k((ah[ad] * ag + 50) / 100);\n\t if (ai < 1) {\n\t ai = 1\n\t } else {\n\t if (ai > 255) {\n\t ai = 255\n\t }\n\t }\n\t K[i[ad]] = ai\n\t }\n\t var ac = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n\t var ab = 0;\n\t for (var ak = 0; ak < 8; ak++) {\n\t for (var aa = 0; aa < 8; aa++) {\n\t d[ab] = (1 / (O[i[ab]] * ac[ak] * ac[aa] * 8));\n\t Z[ab] = (1 / (K[i[ab]] * ac[ak] * ac[aa] * 8));\n\t ab++\n\t }\n\t }\n\t }\n\t\n\t function q (ae, aa) {\n\t var ad = 0;\n\t var ag = 0;\n\t var af = new Array();\n\t for (var ab = 1; ab <= 16; ab++) {\n\t for (var ac = 1; ac <= ae[ab]; ac++) {\n\t af[aa[ag]] = [];\n\t af[aa[ag]][0] = ad;\n\t af[aa[ag]][1] = ab;\n\t ag++;\n\t ad++\n\t }\n\t ad *= 2\n\t }\n\t return af\n\t }\n\t\n\t function W () {\n\t u = q(g, c);\n\t h = q(v, Y);\n\t G = q(w, E);\n\t T = q(J, B)\n\t }\n\t\n\t function z () {\n\t var ac = 1;\n\t var ab = 2;\n\t for (var aa = 1; aa <= 15; aa++) {\n\t for (var ad = ac; ad < ab; ad++) {\n\t m[32767 + ad] = aa;\n\t n[32767 + ad] = [];\n\t n[32767 + ad][1] = aa;\n\t n[32767 + ad][0] = ad\n\t }\n\t for (var ae = -(ab - 1); ae <= -ac; ae++) {\n\t m[32767 + ae] = aa;\n\t n[32767 + ae] = [];\n\t n[32767 + ae][1] = aa;\n\t n[32767 + ae][0] = ab - 1 + ae\n\t }\n\t ac <<= 1;\n\t ab <<= 1\n\t }\n\t }\n\t\n\t function V () {\n\t for (var aa = 0; aa < 256; aa++) {\n\t C[aa] = 19595 * aa;\n\t C[(aa + 256) >> 0] = 38470 * aa;\n\t C[(aa + 512) >> 0] = 7471 * aa + 32768;\n\t C[(aa + 768) >> 0] = -11059 * aa;\n\t C[(aa + 1024) >> 0] = -21709 * aa;\n\t C[(aa + 1280) >> 0] = 32768 * aa + 8421375;\n\t C[(aa + 1536) >> 0] = -27439 * aa;\n\t C[(aa + 1792) >> 0] = -5329 * aa\n\t }\n\t }\n\t\n\t function X (aa) {\n\t var ac = aa[0];\n\t var ab = aa[1] - 1;\n\t while (ab >= 0) {\n\t if (ac & (1 << ab)) {\n\t t |= (1 << a)\n\t }\n\t ab--;\n\t a--;\n\t if (a < 0) {\n\t if (t == 255) {\n\t F(255);\n\t F(0)\n\t } else {\n\t F(t)\n\t }\n\t a = 7;\n\t t = 0\n\t }\n\t }\n\t }\n\t\n\t function F (aa) {\n\t j.push(e[aa])\n\t }\n\t\n\t function p (aa) {\n\t F((aa >> 8) & 255);\n\t F((aa) & 255)\n\t }\n\t\n\t function N (aZ, ap) {\n\t var aL, aK, aJ, aI, aH, aD, aC, aB;\n\t var aN = 0;\n\t var aR;\n\t const aq = 8;\n\t const ai = 64;\n\t for (aR = 0; aR < aq; ++aR) {\n\t aL = aZ[aN];\n\t aK = aZ[aN + 1];\n\t aJ = aZ[aN + 2];\n\t aI = aZ[aN + 3];\n\t aH = aZ[aN + 4];\n\t aD = aZ[aN + 5];\n\t aC = aZ[aN + 6];\n\t aB = aZ[aN + 7];\n\t var aY = aL + aB;\n\t var aO = aL - aB;\n\t var aX = aK + aC;\n\t var aP = aK - aC;\n\t var aU = aJ + aD;\n\t var aQ = aJ - aD;\n\t var aT = aI + aH;\n\t var aS = aI - aH;\n\t var an = aY + aT;\n\t var ak = aY - aT;\n\t var am = aX + aU;\n\t var al = aX - aU;\n\t aZ[aN] = an + am;\n\t aZ[aN + 4] = an - am;\n\t var ax = (al + ak) * 0.707106781;\n\t aZ[aN + 2] = ak + ax;\n\t aZ[aN + 6] = ak - ax;\n\t an = aS + aQ;\n\t am = aQ + aP;\n\t al = aP + aO;\n\t var at = (an - al) * 0.382683433;\n\t var aw = 0.5411961 * an + at;\n\t var au = 1.306562965 * al + at;\n\t var av = am * 0.707106781;\n\t var ah = aO + av;\n\t var ag = aO - av;\n\t aZ[aN + 5] = ag + aw;\n\t aZ[aN + 3] = ag - aw;\n\t aZ[aN + 1] = ah + au;\n\t aZ[aN + 7] = ah - au;\n\t aN += 8\n\t }\n\t aN = 0;\n\t for (aR = 0; aR < aq; ++aR) {\n\t aL = aZ[aN];\n\t aK = aZ[aN + 8];\n\t aJ = aZ[aN + 16];\n\t aI = aZ[aN + 24];\n\t aH = aZ[aN + 32];\n\t aD = aZ[aN + 40];\n\t aC = aZ[aN + 48];\n\t aB = aZ[aN + 56];\n\t var ar = aL + aB;\n\t var aj = aL - aB;\n\t var az = aK + aC;\n\t var ae = aK - aC;\n\t var aG = aJ + aD;\n\t var ac = aJ - aD;\n\t var aW = aI + aH;\n\t var aa = aI - aH;\n\t var ao = ar + aW;\n\t var aV = ar - aW;\n\t var ay = az + aG;\n\t var aF = az - aG;\n\t aZ[aN] = ao + ay;\n\t aZ[aN + 32] = ao - ay;\n\t var af = (aF + aV) * 0.707106781;\n\t aZ[aN + 16] = aV + af;\n\t aZ[aN + 48] = aV - af;\n\t ao = aa + ac;\n\t ay = ac + ae;\n\t aF = ae + aj;\n\t var aM = (ao - aF) * 0.382683433;\n\t var ad = 0.5411961 * ao + aM;\n\t var a1 = 1.306562965 * aF + aM;\n\t var ab = ay * 0.707106781;\n\t var a0 = aj + ab;\n\t var aA = aj - ab;\n\t aZ[aN + 40] = aA + ad;\n\t aZ[aN + 24] = aA - ad;\n\t aZ[aN + 8] = a0 + a1;\n\t aZ[aN + 56] = a0 - a1;\n\t aN++\n\t }\n\t var aE;\n\t for (aR = 0; aR < ai; ++aR) {\n\t aE = aZ[aR] * ap[aR];\n\t P[aR] = (aE > 0) ? ((aE + 0.5) | 0) : ((aE - 0.5) | 0)\n\t }\n\t return P\n\t }\n\t\n\t function b () {\n\t p(65504);\n\t p(16);\n\t F(74);\n\t F(70);\n\t F(73);\n\t F(70);\n\t F(0);\n\t F(1);\n\t F(1);\n\t F(0);\n\t p(1);\n\t p(1);\n\t F(0);\n\t F(0)\n\t }\n\t\n\t function r (aa, ab) {\n\t p(65472);\n\t p(17);\n\t F(8);\n\t p(ab);\n\t p(aa);\n\t F(3);\n\t F(1);\n\t F(17);\n\t F(0);\n\t F(2);\n\t F(17);\n\t F(1);\n\t F(3);\n\t F(17);\n\t F(1)\n\t }\n\t\n\t function D () {\n\t p(65499);\n\t p(132);\n\t F(0);\n\t for (var ab = 0; ab < 64; ab++) {\n\t F(O[ab])\n\t }\n\t F(1);\n\t for (var aa = 0; aa < 64; aa++) {\n\t F(K[aa])\n\t }\n\t }\n\t\n\t function H () {\n\t p(65476);\n\t p(418);\n\t F(0);\n\t for (var ae = 0; ae < 16; ae++) {\n\t F(g[ae + 1])\n\t }\n\t for (var ad = 0; ad <= 11; ad++) {\n\t F(c[ad])\n\t }\n\t F(16);\n\t for (var ac = 0; ac < 16; ac++) {\n\t F(w[ac + 1])\n\t }\n\t for (var ab = 0; ab <= 161; ab++) {\n\t F(E[ab])\n\t }\n\t F(1);\n\t for (var aa = 0; aa < 16; aa++) {\n\t F(v[aa + 1])\n\t }\n\t for (var ah = 0; ah <= 11; ah++) {\n\t F(Y[ah])\n\t }\n\t F(17);\n\t for (var ag = 0; ag < 16; ag++) {\n\t F(J[ag + 1])\n\t }\n\t for (var af = 0; af <= 161; af++) {\n\t F(B[af])\n\t }\n\t }\n\t\n\t function I () {\n\t p(65498);\n\t p(12);\n\t F(3);\n\t F(1);\n\t F(0);\n\t F(2);\n\t F(17);\n\t F(3);\n\t F(17);\n\t F(0);\n\t F(63);\n\t F(0)\n\t }\n\t\n\t function L (ad, aa, al, at, ap) {\n\t var ag = ap[0];\n\t var ab = ap[240];\n\t var ac;\n\t const ar = 16;\n\t const ai = 63;\n\t const ah = 64;\n\t var aq = N(ad, aa);\n\t for (var am = 0; am < ah; ++am) {\n\t S[i[am]] = aq[am]\n\t }\n\t var an = S[0] - al;\n\t al = S[0];\n\t if (an == 0) {\n\t X(at[0])\n\t } else {\n\t ac = 32767 + an;\n\t X(at[m[ac]]);\n\t X(n[ac])\n\t }\n\t var ae = 63;\n\t for (; (ae > 0) && (S[ae] == 0); ae--) {\n\t }\n\t if (ae == 0) {\n\t X(ag);\n\t return al\n\t }\n\t var ao = 1;\n\t var au;\n\t while (ao <= ae) {\n\t var ak = ao;\n\t for (; (S[ao] == 0) && (ao <= ae); ++ao) {\n\t }\n\t var aj = ao - ak;\n\t if (aj >= ar) {\n\t au = aj >> 4;\n\t for (var af = 1; af <= au; ++af) {\n\t X(ab)\n\t }\n\t aj = aj & 15\n\t }\n\t ac = 32767 + S[ao];\n\t X(ap[(aj << 4) + m[ac]]);\n\t X(n[ac]);\n\t ao++\n\t }\n\t if (ae != ai) {\n\t X(ag)\n\t }\n\t return al\n\t }\n\t\n\t function y () {\n\t var ab = String.fromCharCode;\n\t for (var aa = 0; aa < 256; aa++) {\n\t e[aa] = ab(aa)\n\t }\n\t }\n\t\n\t this.encode = function (an, aj, aB) {\n\t var aa = new Date().getTime();\n\t if (aj) {\n\t R(aj)\n\t }\n\t j = new Array();\n\t t = 0;\n\t a = 7;\n\t p(65496);\n\t b();\n\t D();\n\t r(an.width, an.height);\n\t H();\n\t I();\n\t var al = 0;\n\t var aq = 0;\n\t var ao = 0;\n\t t = 0;\n\t a = 7;\n\t this.encode.displayName = \"_encode_\";\n\t var at = an.data;\n\t var ar = an.width;\n\t var aA = an.height;\n\t var ay = ar * 4;\n\t var ai = ar * 3;\n\t var ah, ag = 0;\n\t var am, ax, az;\n\t var ab, ap, ac, af, ae;\n\t while (ag < aA) {\n\t ah = 0;\n\t while (ah < ay) {\n\t ab = ay * ag + ah;\n\t ap = ab;\n\t ac = -1;\n\t af = 0;\n\t for (ae = 0; ae < 64; ae++) {\n\t af = ae >> 3;\n\t ac = (ae & 7) * 4;\n\t ap = ab + (af * ay) + ac;\n\t if (ag + af >= aA) {\n\t ap -= (ay * (ag + 1 + af - aA))\n\t }\n\t if (ah + ac >= ay) {\n\t ap -= ((ah + ac) - ay + 4)\n\t }\n\t am = at[ap++];\n\t ax = at[ap++];\n\t az = at[ap++];\n\t A[ae] = ((C[am] + C[(ax + 256) >> 0] + C[(az + 512) >> 0]) >> 16) - 128;\n\t f[ae] = ((C[(am + 768) >> 0] + C[(ax + 1024) >> 0] + C[(az + 1280) >> 0]) >> 16) - 128;\n\t U[ae] = ((C[(am + 1280) >> 0] + C[(ax + 1536) >> 0] + C[(az + 1792) >> 0]) >> 16) - 128\n\t }\n\t al = L(A, d, al, u, G);\n\t aq = L(f, Z, aq, h, T);\n\t ao = L(U, Z, ao, h, T);\n\t ah += 32\n\t }\n\t ag += 8\n\t }\n\t if (a >= 0) {\n\t var aw = [];\n\t aw[1] = a + 1;\n\t aw[0] = (1 << (a + 1)) - 1;\n\t X(aw)\n\t }\n\t p(65497);\n\t if (aB) {\n\t var av = j.length;\n\t var aC = new Uint8Array(av);\n\t for (var au = 0; au < av; au++) {\n\t aC[au] = j[au].charCodeAt()\n\t }\n\t j = [];\n\t var ak = new Date().getTime() - aa;\n\t return aC\n\t }\n\t var ad = \"data:image/jpeg;base64,\" + btoa(j.join(\"\"));\n\t j = [];\n\t var ak = new Date().getTime() - aa;\n\t return ad\n\t };\n\t function R (ab) {\n\t if (ab <= 0) {\n\t ab = 1\n\t }\n\t if (ab > 100) {\n\t ab = 100\n\t }\n\t if (x == ab) {\n\t return\n\t }\n\t var aa = 0;\n\t if (ab < 50) {\n\t aa = Math.floor(5000 / ab)\n\t } else {\n\t aa = Math.floor(200 - ab * 2)\n\t }\n\t M(aa);\n\t x = ab;\n\t }\n\t\n\t function Q () {\n\t var aa = new Date().getTime();\n\t if (!l) {\n\t l = 50\n\t }\n\t y();\n\t W();\n\t z();\n\t V();\n\t R(l);\n\t var ab = new Date().getTime() - aa;\n\t }\n\t\n\t Q()\n\t}\n\t\n\tmodule.exports = JPEGEncoder;\n\n/***/ }\n\n});\n\n\n/** WEBPACK FOOTER **\n ** 2.chunk.js\n **/","function JPEGEncoder (l) {\n var o = this;\n var s = Math.round;\n var k = Math.floor;\n var O = new Array(64);\n var K = new Array(64);\n var d = new Array(64);\n var Z = new Array(64);\n var u;\n var h;\n var G;\n var T;\n var n = new Array(65535);\n var m = new Array(65535);\n var P = new Array(64);\n var S = new Array(64);\n var j = [];\n var t = 0;\n var a = 7;\n var A = new Array(64);\n var f = new Array(64);\n var U = new Array(64);\n var e = new Array(256);\n var C = new Array(2048);\n var x;\n var i = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\n var g = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];\n var c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var w = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125];\n var E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n var v = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0];\n var Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var J = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119];\n var B = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\n function M (ag) {\n var af = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99];\n for (var ae = 0; ae < 64; ae++) {\n var aj = k((af[ae] * ag + 50) / 100);\n if (aj < 1) {\n aj = 1\n } else {\n if (aj > 255) {\n aj = 255\n }\n }\n O[i[ae]] = aj\n }\n var ah = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99];\n for (var ad = 0; ad < 64; ad++) {\n var ai = k((ah[ad] * ag + 50) / 100);\n if (ai < 1) {\n ai = 1\n } else {\n if (ai > 255) {\n ai = 255\n }\n }\n K[i[ad]] = ai\n }\n var ac = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n var ab = 0;\n for (var ak = 0; ak < 8; ak++) {\n for (var aa = 0; aa < 8; aa++) {\n d[ab] = (1 / (O[i[ab]] * ac[ak] * ac[aa] * 8));\n Z[ab] = (1 / (K[i[ab]] * ac[ak] * ac[aa] * 8));\n ab++\n }\n }\n }\n\n function q (ae, aa) {\n var ad = 0;\n var ag = 0;\n var af = new Array();\n for (var ab = 1; ab <= 16; ab++) {\n for (var ac = 1; ac <= ae[ab]; ac++) {\n af[aa[ag]] = [];\n af[aa[ag]][0] = ad;\n af[aa[ag]][1] = ab;\n ag++;\n ad++\n }\n ad *= 2\n }\n return af\n }\n\n function W () {\n u = q(g, c);\n h = q(v, Y);\n G = q(w, E);\n T = q(J, B)\n }\n\n function z () {\n var ac = 1;\n var ab = 2;\n for (var aa = 1; aa <= 15; aa++) {\n for (var ad = ac; ad < ab; ad++) {\n m[32767 + ad] = aa;\n n[32767 + ad] = [];\n n[32767 + ad][1] = aa;\n n[32767 + ad][0] = ad\n }\n for (var ae = -(ab - 1); ae <= -ac; ae++) {\n m[32767 + ae] = aa;\n n[32767 + ae] = [];\n n[32767 + ae][1] = aa;\n n[32767 + ae][0] = ab - 1 + ae\n }\n ac <<= 1;\n ab <<= 1\n }\n }\n\n function V () {\n for (var aa = 0; aa < 256; aa++) {\n C[aa] = 19595 * aa;\n C[(aa + 256) >> 0] = 38470 * aa;\n C[(aa + 512) >> 0] = 7471 * aa + 32768;\n C[(aa + 768) >> 0] = -11059 * aa;\n C[(aa + 1024) >> 0] = -21709 * aa;\n C[(aa + 1280) >> 0] = 32768 * aa + 8421375;\n C[(aa + 1536) >> 0] = -27439 * aa;\n C[(aa + 1792) >> 0] = -5329 * aa\n }\n }\n\n function X (aa) {\n var ac = aa[0];\n var ab = aa[1] - 1;\n while (ab >= 0) {\n if (ac & (1 << ab)) {\n t |= (1 << a)\n }\n ab--;\n a--;\n if (a < 0) {\n if (t == 255) {\n F(255);\n F(0)\n } else {\n F(t)\n }\n a = 7;\n t = 0\n }\n }\n }\n\n function F (aa) {\n j.push(e[aa])\n }\n\n function p (aa) {\n F((aa >> 8) & 255);\n F((aa) & 255)\n }\n\n function N (aZ, ap) {\n var aL, aK, aJ, aI, aH, aD, aC, aB;\n var aN = 0;\n var aR;\n const aq = 8;\n const ai = 64;\n for (aR = 0; aR < aq; ++aR) {\n aL = aZ[aN];\n aK = aZ[aN + 1];\n aJ = aZ[aN + 2];\n aI = aZ[aN + 3];\n aH = aZ[aN + 4];\n aD = aZ[aN + 5];\n aC = aZ[aN + 6];\n aB = aZ[aN + 7];\n var aY = aL + aB;\n var aO = aL - aB;\n var aX = aK + aC;\n var aP = aK - aC;\n var aU = aJ + aD;\n var aQ = aJ - aD;\n var aT = aI + aH;\n var aS = aI - aH;\n var an = aY + aT;\n var ak = aY - aT;\n var am = aX + aU;\n var al = aX - aU;\n aZ[aN] = an + am;\n aZ[aN + 4] = an - am;\n var ax = (al + ak) * 0.707106781;\n aZ[aN + 2] = ak + ax;\n aZ[aN + 6] = ak - ax;\n an = aS + aQ;\n am = aQ + aP;\n al = aP + aO;\n var at = (an - al) * 0.382683433;\n var aw = 0.5411961 * an + at;\n var au = 1.306562965 * al + at;\n var av = am * 0.707106781;\n var ah = aO + av;\n var ag = aO - av;\n aZ[aN + 5] = ag + aw;\n aZ[aN + 3] = ag - aw;\n aZ[aN + 1] = ah + au;\n aZ[aN + 7] = ah - au;\n aN += 8\n }\n aN = 0;\n for (aR = 0; aR < aq; ++aR) {\n aL = aZ[aN];\n aK = aZ[aN + 8];\n aJ = aZ[aN + 16];\n aI = aZ[aN + 24];\n aH = aZ[aN + 32];\n aD = aZ[aN + 40];\n aC = aZ[aN + 48];\n aB = aZ[aN + 56];\n var ar = aL + aB;\n var aj = aL - aB;\n var az = aK + aC;\n var ae = aK - aC;\n var aG = aJ + aD;\n var ac = aJ - aD;\n var aW = aI + aH;\n var aa = aI - aH;\n var ao = ar + aW;\n var aV = ar - aW;\n var ay = az + aG;\n var aF = az - aG;\n aZ[aN] = ao + ay;\n aZ[aN + 32] = ao - ay;\n var af = (aF + aV) * 0.707106781;\n aZ[aN + 16] = aV + af;\n aZ[aN + 48] = aV - af;\n ao = aa + ac;\n ay = ac + ae;\n aF = ae + aj;\n var aM = (ao - aF) * 0.382683433;\n var ad = 0.5411961 * ao + aM;\n var a1 = 1.306562965 * aF + aM;\n var ab = ay * 0.707106781;\n var a0 = aj + ab;\n var aA = aj - ab;\n aZ[aN + 40] = aA + ad;\n aZ[aN + 24] = aA - ad;\n aZ[aN + 8] = a0 + a1;\n aZ[aN + 56] = a0 - a1;\n aN++\n }\n var aE;\n for (aR = 0; aR < ai; ++aR) {\n aE = aZ[aR] * ap[aR];\n P[aR] = (aE > 0) ? ((aE + 0.5) | 0) : ((aE - 0.5) | 0)\n }\n return P\n }\n\n function b () {\n p(65504);\n p(16);\n F(74);\n F(70);\n F(73);\n F(70);\n F(0);\n F(1);\n F(1);\n F(0);\n p(1);\n p(1);\n F(0);\n F(0)\n }\n\n function r (aa, ab) {\n p(65472);\n p(17);\n F(8);\n p(ab);\n p(aa);\n F(3);\n F(1);\n F(17);\n F(0);\n F(2);\n F(17);\n F(1);\n F(3);\n F(17);\n F(1)\n }\n\n function D () {\n p(65499);\n p(132);\n F(0);\n for (var ab = 0; ab < 64; ab++) {\n F(O[ab])\n }\n F(1);\n for (var aa = 0; aa < 64; aa++) {\n F(K[aa])\n }\n }\n\n function H () {\n p(65476);\n p(418);\n F(0);\n for (var ae = 0; ae < 16; ae++) {\n F(g[ae + 1])\n }\n for (var ad = 0; ad <= 11; ad++) {\n F(c[ad])\n }\n F(16);\n for (var ac = 0; ac < 16; ac++) {\n F(w[ac + 1])\n }\n for (var ab = 0; ab <= 161; ab++) {\n F(E[ab])\n }\n F(1);\n for (var aa = 0; aa < 16; aa++) {\n F(v[aa + 1])\n }\n for (var ah = 0; ah <= 11; ah++) {\n F(Y[ah])\n }\n F(17);\n for (var ag = 0; ag < 16; ag++) {\n F(J[ag + 1])\n }\n for (var af = 0; af <= 161; af++) {\n F(B[af])\n }\n }\n\n function I () {\n p(65498);\n p(12);\n F(3);\n F(1);\n F(0);\n F(2);\n F(17);\n F(3);\n F(17);\n F(0);\n F(63);\n F(0)\n }\n\n function L (ad, aa, al, at, ap) {\n var ag = ap[0];\n var ab = ap[240];\n var ac;\n const ar = 16;\n const ai = 63;\n const ah = 64;\n var aq = N(ad, aa);\n for (var am = 0; am < ah; ++am) {\n S[i[am]] = aq[am]\n }\n var an = S[0] - al;\n al = S[0];\n if (an == 0) {\n X(at[0])\n } else {\n ac = 32767 + an;\n X(at[m[ac]]);\n X(n[ac])\n }\n var ae = 63;\n for (; (ae > 0) && (S[ae] == 0); ae--) {\n }\n if (ae == 0) {\n X(ag);\n return al\n }\n var ao = 1;\n var au;\n while (ao <= ae) {\n var ak = ao;\n for (; (S[ao] == 0) && (ao <= ae); ++ao) {\n }\n var aj = ao - ak;\n if (aj >= ar) {\n au = aj >> 4;\n for (var af = 1; af <= au; ++af) {\n X(ab)\n }\n aj = aj & 15\n }\n ac = 32767 + S[ao];\n X(ap[(aj << 4) + m[ac]]);\n X(n[ac]);\n ao++\n }\n if (ae != ai) {\n X(ag)\n }\n return al\n }\n\n function y () {\n var ab = String.fromCharCode;\n for (var aa = 0; aa < 256; aa++) {\n e[aa] = ab(aa)\n }\n }\n\n this.encode = function (an, aj, aB) {\n var aa = new Date().getTime();\n if (aj) {\n R(aj)\n }\n j = new Array();\n t = 0;\n a = 7;\n p(65496);\n b();\n D();\n r(an.width, an.height);\n H();\n I();\n var al = 0;\n var aq = 0;\n var ao = 0;\n t = 0;\n a = 7;\n this.encode.displayName = \"_encode_\";\n var at = an.data;\n var ar = an.width;\n var aA = an.height;\n var ay = ar * 4;\n var ai = ar * 3;\n var ah, ag = 0;\n var am, ax, az;\n var ab, ap, ac, af, ae;\n while (ag < aA) {\n ah = 0;\n while (ah < ay) {\n ab = ay * ag + ah;\n ap = ab;\n ac = -1;\n af = 0;\n for (ae = 0; ae < 64; ae++) {\n af = ae >> 3;\n ac = (ae & 7) * 4;\n ap = ab + (af * ay) + ac;\n if (ag + af >= aA) {\n ap -= (ay * (ag + 1 + af - aA))\n }\n if (ah + ac >= ay) {\n ap -= ((ah + ac) - ay + 4)\n }\n am = at[ap++];\n ax = at[ap++];\n az = at[ap++];\n A[ae] = ((C[am] + C[(ax + 256) >> 0] + C[(az + 512) >> 0]) >> 16) - 128;\n f[ae] = ((C[(am + 768) >> 0] + C[(ax + 1024) >> 0] + C[(az + 1280) >> 0]) >> 16) - 128;\n U[ae] = ((C[(am + 1280) >> 0] + C[(ax + 1536) >> 0] + C[(az + 1792) >> 0]) >> 16) - 128\n }\n al = L(A, d, al, u, G);\n aq = L(f, Z, aq, h, T);\n ao = L(U, Z, ao, h, T);\n ah += 32\n }\n ag += 8\n }\n if (a >= 0) {\n var aw = [];\n aw[1] = a + 1;\n aw[0] = (1 << (a + 1)) - 1;\n X(aw)\n }\n p(65497);\n if (aB) {\n var av = j.length;\n var aC = new Uint8Array(av);\n for (var au = 0; au < av; au++) {\n aC[au] = j[au].charCodeAt()\n }\n j = [];\n var ak = new Date().getTime() - aa;\n return aC\n }\n var ad = \"data:image/jpeg;base64,\" + btoa(j.join(\"\"));\n j = [];\n var ak = new Date().getTime() - aa;\n return ad\n };\n function R (ab) {\n if (ab <= 0) {\n ab = 1\n }\n if (ab > 100) {\n ab = 100\n }\n if (x == ab) {\n return\n }\n var aa = 0;\n if (ab < 50) {\n aa = Math.floor(5000 / ab)\n } else {\n aa = Math.floor(200 - ab * 2)\n }\n M(aa);\n x = ab;\n }\n\n function Q () {\n var aa = new Date().getTime();\n if (!l) {\n l = 50\n }\n y();\n W();\n z();\n V();\n R(l);\n var ab = new Date().getTime() - aa;\n }\n\n Q()\n}\n\nmodule.exports = JPEGEncoder;\n\n\n/** WEBPACK FOOTER **\n ** src/lib/jpeg_encoder_basic.js\n **/"],"sourceRoot":""}
...\ No newline at end of file ...\ No newline at end of file
1 +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(6),n(7),e.exports=n(8)},function(e,t,n){(function(t){!function(n){function r(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(e,r(a,this),r(s,this))}function o(e){var t=this;return null===this._state?void this._deferreds.push(e):void f(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(a,this),r(s,this))}this._state=!0,this._value=e,u.call(this)}catch(n){s.call(this,n)}}function s(e){this._state=!1,this._value=e,u.call(this)}function u(){for(var e=0,t=this._deferreds.length;t>e;e++)o.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}var f="function"==typeof t&&t||function(e){setTimeout(e,1)},d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=this;return new i(function(r,i){o.call(n,new c(e,t,r,i))})},i.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&d(arguments[0])?arguments[0]:arguments);return new i(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(e){return new i(function(t,n){n(e)})},i.race=function(e){return new i(function(t,n){for(var r=0,i=e.length;i>r;r++)e[r].then(t,n)})},i._setImmediateFn=function(e){f=e},i.prototype.always=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},"undefined"!=typeof e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(2).setImmediate)},function(e,t,n){(function(e,r){function i(e,t){this._id=e,this._clearFn=t}var o=n(3).nextTick,a=Function.prototype.apply,s=Array.prototype.slice,u={},c=0;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=c++,r=arguments.length<2?!1:s.call(arguments,1);return u[n]=!0,o(function(){u[n]&&(r?e.apply(null,r):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof r?r:function(e){delete u[e]}}).call(t,n(2).setImmediate,n(2).clearImmediate)},function(e,t){function n(){c=!1,a.length?u=a.concat(u):l=-1,u.length&&r()}function r(){if(!c){var e=setTimeout(n);c=!0;for(var t=u.length;t;){for(a=u,u=[];++l<t;)a&&a[l].run();l=-1,t=u.length}a=null,c=!1,clearTimeout(e)}}function i(e,t){this.fun=e,this.array=t}function o(){}var a,s=e.exports={},u=[],c=!1,l=-1;s.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new i(e,t)),1!==u.length||c||setTimeout(r,0)},i.prototype.run=function(){this.fun.apply(null,this.array)},s.title="browser",s.browser=!0,s.env={},s.argv=[],s.version="",s.versions={},s.on=o,s.addListener=o,s.once=o,s.off=o,s.removeListener=o,s.removeAllListeners=o,s.emit=o,s.binding=function(e){throw new Error("process.binding is not supported")},s.cwd=function(){return"/"},s.chdir=function(e){throw new Error("process.chdir is not supported")},s.umask=function(){return 0}},function(e,t){function n(){var e=~navigator.userAgent.indexOf("Android")&&~navigator.vendor.indexOf("Google")&&!~navigator.userAgent.indexOf("Chrome");return e&&navigator.userAgent.match(/AppleWebKit\/(\d+)/).pop()<=534||/MQQBrowser/g.test(navigator.userAgent)}var r=function(){try{return new Blob,!0}catch(e){return!1}}()?window.Blob:function(e,t){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MSBlobBuilder||window.MozBlobBuilder);return e.forEach(function(e){n.append(e)}),n.getBlob(t?t.type:void 0)},i=function(){function e(){var e=this,n=[],i=Array(21).join("-")+(+new Date*(1e16*Math.random())).toString(36),o=XMLHttpRequest.prototype.send;this.getParts=function(){return n.toString()},this.append=function(e,t,r){n.push("--"+i+'\r\nContent-Disposition: form-data; name="'+e+'"'),t instanceof Blob?(n.push('; filename="'+(r||"blob")+'"\r\nContent-Type: '+t.type+"\r\n\r\n"),n.push(t)):n.push("\r\n\r\n"+t),n.push("\r\n")},t++,XMLHttpRequest.prototype.send=function(a){var s,u,c=this;a===e?(n.push("--"+i+"--\r\n"),u=new r(n),s=new FileReader,s.onload=function(){o.call(c,s.result)},s.onerror=function(e){throw e},s.readAsArrayBuffer(u),this.setRequestHeader("Content-Type","multipart/form-data; boundary="+i),t--,0==t&&(XMLHttpRequest.prototype.send=o)):o.call(this,a)}}var t=0;return e.prototype=Object.create(FormData.prototype),e}();e.exports={Blob:r,FormData:n()?i:FormData}},function(e,t,n){var r,i;(function(){function n(e){return!!e.exifdata}function o(e,t){t=t||e.match(/^data\:([^\;]+)\;base64,/im)[1]||"",e=e.replace(/^data\:([^\;]+)\;base64,/gim,"");for(var n=atob(e),r=n.length,i=new ArrayBuffer(r),o=new Uint8Array(i),a=0;r>a;a++)o[a]=n.charCodeAt(a);return i}function a(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){(200==this.status||0===this.status)&&t(this.response)},n.send()}function s(e,t){function n(n){var r=u(n),i=c(n);e.exifdata=r||{},e.iptcdata=i||{},t&&t.call(e)}if(e.src)if(/^data\:/i.test(e.src)){var r=o(e.src);n(r)}else if(/^blob\:/i.test(e.src)){var i=new FileReader;i.onload=function(e){n(e.target.result)},a(e.src,function(e){i.readAsArrayBuffer(e)})}else{var s=new XMLHttpRequest;s.onload=function(){200==this.status||0===this.status?n(s.response):t(new Error("Could not load image")),s=null},s.open("GET",e.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var i=new FileReader;i.onload=function(e){p&&console.log("Got file of length "+e.target.result.byteLength),n(e.target.result)},i.readAsArrayBuffer(e)}}function u(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n,r=2,i=e.byteLength;i>r;){if(255!=t.getUint8(r))return p&&console.log("Not a valid marker at offset "+r+", found: "+t.getUint8(r)),!1;if(n=t.getUint8(r+1),p&&console.log(n),225==n)return p&&console.log("Found 0xFFE1 marker"),g(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function c(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>n;){if(i(t,n)){var o=t.getUint8(n+7);o%2!==0&&(o+=1),0===o&&(o=4);var a=n+8+o,s=t.getUint16(n+6+o);return l(e,a,s)}n++}}function l(e,t,n){for(var r,i,o,a,s,u=new DataView(e),c={},l=t;t+n>l;)28===u.getUint8(l)&&2===u.getUint8(l+1)&&(a=u.getUint8(l+2),a in S&&(o=u.getInt16(l+3),s=o+5,i=S[a],r=h(u,l+5,o),c.hasOwnProperty(i)?c[i]instanceof Array?c[i].push(r):c[i]=[c[i],r]:c[i]=r)),l++;return c}function f(e,t,n,r,i){var o,a,s,u=e.getUint16(n,!i),c={};for(s=0;u>s;s++)o=n+12*s+2,a=r[e.getUint16(o,!i)],!a&&p&&console.log("Unknown tag: "+e.getUint16(o,!i)),c[a]=d(e,o,t,n,i);return c}function d(e,t,n,r,i){var o,a,s,u,c,l,f=e.getUint16(t+2,!i),d=e.getUint32(t+4,!i),g=e.getUint32(t+8,!i)+n;switch(f){case 1:case 7:if(1==d)return e.getUint8(t+8,!i);for(o=d>4?g:t+8,a=[],u=0;d>u;u++)a[u]=e.getUint8(o+u);return a;case 2:return o=d>4?g:t+8,h(e,o,d-1);case 3:if(1==d)return e.getUint16(t+8,!i);for(o=d>2?g:t+8,a=[],u=0;d>u;u++)a[u]=e.getUint16(o+2*u,!i);return a;case 4:if(1==d)return e.getUint32(t+8,!i);for(a=[],u=0;d>u;u++)a[u]=e.getUint32(g+4*u,!i);return a;case 5:if(1==d)return c=e.getUint32(g,!i),l=e.getUint32(g+4,!i),s=new Number(c/l),s.numerator=c,s.denominator=l,s;for(a=[],u=0;d>u;u++)c=e.getUint32(g+8*u,!i),l=e.getUint32(g+4+8*u,!i),a[u]=new Number(c/l),a[u].numerator=c,a[u].denominator=l;return a;case 9:if(1==d)return e.getInt32(t+8,!i);for(a=[],u=0;d>u;u++)a[u]=e.getInt32(g+4*u,!i);return a;case 10:if(1==d)return e.getInt32(g,!i)/e.getInt32(g+4,!i);for(a=[],u=0;d>u;u++)a[u]=e.getInt32(g+8*u,!i)/e.getInt32(g+4+8*u,!i);return a}}function h(e,t,n){var r,i="";for(r=t;t+n>r;r++)i+=String.fromCharCode(e.getUint8(r));return i}function g(e,t){if("Exif"!=h(e,t,4))return p&&console.log("Not valid EXIF data! "+h(e,t,4)),!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return p&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;n=!0}if(42!=e.getUint16(s+2,!n))return p&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var u=e.getUint32(s+4,!n);if(8>u)return p&&console.log("Not valid TIFF data! (First offset less than 8)",e.getUint32(s+4,!n)),!1;if(r=f(e,s,s+u,v,n),r.ExifIFDPointer){o=f(e,s,s+r.ExifIFDPointer,w,n);for(i in o){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=b[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=b.Components[o[i][0]]+b.Components[o[i][1]]+b.Components[o[i][2]]+b.Components[o[i][3]]}r[i]=o[i]}}if(r.GPSInfoIFDPointer){a=f(e,s,s+r.GPSInfoIFDPointer,y,n);for(i in a){switch(i){case"GPSVersionID":a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}r[i]=a[i]}}return r}var p=!1,m=function(e){return e instanceof m?e:this instanceof m?void(this.EXIFwrapped=e):new m(e)};"undefined"!=typeof e&&e.exports&&(t=e.exports=m),t.EXIF=m;var w=m.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},v=m.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},y=m.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},b=m.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}},S={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};m.getData=function(e,t){return(e instanceof Image||e instanceof HTMLImageElement)&&!e.complete?!1:(n(e)?t&&t.call(e):s(e,t),!0)},m.getTag=function(e,t){return n(e)?e.exifdata[t]:void 0},m.getAllTags=function(e){if(!n(e))return{};var t,r=e.exifdata,i={};for(t in r)r.hasOwnProperty(t)&&(i[t]=r[t]);return i},m.pretty=function(e){if(!n(e))return"";var t,r=e.exifdata,i="";for(t in r)r.hasOwnProperty(t)&&(i+="object"==typeof r[t]?r[t]instanceof Number?t+" : "+r[t]+" ["+r[t].numerator+"/"+r[t].denominator+"]\r\n":t+" : ["+r[t].length+" values]\r\n":t+" : "+r[t]+"\r\n");return i},m.readFromBinaryFile=function(e){return u(e)},r=[],i=function(){return m}.apply(t,r),!(void 0!==i&&(e.exports=i))}).call(this)},function(e,t,n){var r,i;!function(){function n(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var r=document.createElement("canvas");r.width=r.height=1;var i=r.getContext("2d");return i.drawImage(e,-t+1,0),0===i.getImageData(0,0,1,1).data[3]}return!1}function o(e,t,n){var r=document.createElement("canvas");r.width=1,r.height=n;var i=r.getContext("2d");i.drawImage(e,0,0);for(var o=i.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}var l=u/n;return 0===l?1:l}function a(e,t,n){var r=document.createElement("canvas");return s(e,r,t,n),r.toDataURL("image/jpeg",t.quality||.8)}function s(e,t,r,i){var a=e.naturalWidth,s=e.naturalHeight,c=r.width,l=r.height,f=t.getContext("2d");f.save(),u(t,f,c,l,r.orientation);var d=n(e);d&&(a/=2,s/=2);var h=1024,g=document.createElement("canvas");g.width=g.height=h;for(var p=g.getContext("2d"),m=i?o(e,a,s):1,w=Math.ceil(h*c/a),v=Math.ceil(h*l/s/m),y=0,b=0;s>y;){for(var S=0,I=0;a>S;)p.clearRect(0,0,h,h),p.drawImage(e,-S,-y),f.drawImage(g,0,0,h,h,I,b,w,v),S+=h,I+=w;y+=h,b+=v}f.restore(),g=p=null}function u(e,t,n,r,i){switch(i){case 5:case 6:case 7:case 8:e.width=r,e.height=n;break;default:e.width=n,e.height=r}switch(i){case 2:t.translate(n,0),t.scale(-1,1);break;case 3:t.translate(n,r),t.rotate(Math.PI);break;case 4:t.translate(0,r),t.scale(1,-1);break;case 5:t.rotate(.5*Math.PI),t.scale(1,-1);break;case 6:t.rotate(.5*Math.PI),t.translate(0,-r);break;case 7:t.rotate(.5*Math.PI),t.translate(n,-r),t.scale(-1,1);break;case 8:t.rotate(-.5*Math.PI),t.translate(-n,0)}}function c(e){if(window.Blob&&e instanceof Blob){var t=new Image,n=window.URL&&window.URL.createObjectURL?window.URL:window.webkitURL&&window.webkitURL.createObjectURL?window.webkitURL:null;if(!n)throw Error("No createObjectURL function found to create blob url");t.src=n.createObjectURL(e),this.blob=e,e=t}if(!e.naturalWidth&&!e.naturalHeight){var r=this;e.onload=function(){var e=r.imageLoadListeners;if(e){r.imageLoadListeners=null;for(var t=0,n=e.length;n>t;t++)e[t]()}},this.imageLoadListeners=[]}this.srcImage=e}c.prototype.render=function(e,t,n){if(this.imageLoadListeners){var r=this;return void this.imageLoadListeners.push(function(){r.render(e,t,n)})}t=t||{};var i=this.srcImage,o=i.src,u=o.length,c=i.naturalWidth,l=i.naturalHeight,f=t.width,d=t.height,h=t.maxWidth,g=t.maxHeight,p=this.blob&&"image/jpeg"===this.blob.type||0===o.indexOf("data:image/jpeg")||o.indexOf(".jpg")===u-4||o.indexOf(".jpeg")===u-5;f&&!d?d=l*f/c<<0:d&&!f?f=c*d/l<<0:(f=c,d=l),h&&f>h&&(f=h,d=l*f/c<<0),g&&d>g&&(d=g,f=c*d/l<<0);var m={width:f,height:d};for(var w in t)m[w]=t[w];var v=e.tagName.toLowerCase();"img"===v?e.src=a(this.srcImage,m,p):"canvas"===v&&s(this.srcImage,e,m,p),"function"==typeof this.onrender&&this.onrender(e),n&&n()},r=[],i=function(){return c}.apply(t,r),!(void 0!==i&&(e.exports=i))}()},function(e,t){function n(e){function t(e){for(var t=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;64>n;n++){var r=F((t[n]*e+50)/100);1>r?r=1:r>255&&(r=255),D[N[n]]=r}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],o=0;64>o;o++){var a=F((i[o]*e+50)/100);1>a?a=1:a>255&&(a=255),x[N[o]]=a}for(var s=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],u=0,c=0;8>c;c++)for(var l=0;8>l;l++)U[u]=1/(D[N[u]]*s[c]*s[l]*8),C[u]=1/(x[N[u]]*s[c]*s[l]*8),u++}function n(e,t){for(var n=0,r=0,i=new Array,o=1;16>=o;o++){for(var a=1;a<=e[o];a++)i[t[r]]=[],i[t[r]][0]=n,i[t[r]][1]=o,r++,n++;n*=2}return i}function r(){y=n(W,H),b=n(V,X),S=n(z,q),I=n(Q,Y)}function i(){for(var e=1,t=2,n=1;15>=n;n++){for(var r=e;t>r;r++)A[32767+r]=n,T[32767+r]=[],T[32767+r][1]=n,T[32767+r][0]=r;for(var i=-(t-1);-e>=i;i++)A[32767+i]=n,T[32767+i]=[],T[32767+i][1]=n,T[32767+i][0]=t-1+i;e<<=1,t<<=1}}function o(){for(var e=0;256>e;e++)k[e]=19595*e,k[e+256>>0]=38470*e,k[e+512>>0]=7471*e+32768,k[e+768>>0]=-11059*e,k[e+1024>>0]=-21709*e,k[e+1280>>0]=32768*e+8421375,k[e+1536>>0]=-27439*e,k[e+1792>>0]=-5329*e}function a(e){for(var t=e[0],n=e[1]-1;n>=0;)t&1<<n&&(G|=1<<O),n--,O--,0>O&&(255==G?(s(255),s(0)):s(G),O=7,G=0)}function s(e){M.push(j[e])}function u(e){s(e>>8&255),s(255&e)}function c(e,t){var n,r,i,o,a,s,u,c,l,f=0;const d=8,h=64;for(l=0;d>l;++l){n=e[f],r=e[f+1],i=e[f+2],o=e[f+3],a=e[f+4],s=e[f+5],u=e[f+6],c=e[f+7];var g=n+c,p=n-c,m=r+u,w=r-u,v=i+s,y=i-s,b=o+a,S=o-a,I=g+b,P=g-b,F=m+v,D=m-v;e[f]=I+F,e[f+4]=I-F;var x=.707106781*(D+P);e[f+2]=P+x,e[f+6]=P-x,I=S+y,F=y+w,D=w+p;var U=.382683433*(I-D),C=.5411961*I+U,T=1.306562965*D+U,A=.707106781*F,R=p+A,M=p-A;e[f+5]=M+C,e[f+3]=M-C,e[f+1]=R+T,e[f+7]=R-T,f+=8}for(f=0,l=0;d>l;++l){n=e[f],r=e[f+8],i=e[f+16],o=e[f+24],a=e[f+32],s=e[f+40],u=e[f+48],c=e[f+56];var G=n+c,O=n-c,_=r+u,B=r-u,E=i+s,j=i-s,k=o+a,N=o-a,W=G+k,H=G-k,z=_+E,q=_-E;e[f]=W+z,e[f+32]=W-z;var V=.707106781*(q+H);e[f+16]=H+V,e[f+48]=H-V,W=N+j,z=j+B,q=B+O;var X=.382683433*(W-q),Q=.5411961*W+X,Y=1.306562965*q+X,K=.707106781*z,J=O+K,Z=O-K;e[f+40]=Z+Q,e[f+24]=Z-Q,e[f+8]=J+Y,e[f+56]=J-Y,f++}var $;for(l=0;h>l;++l)$=e[l]*t[l],L[l]=$>0?$+.5|0:$-.5|0;return L}function l(){u(65504),u(16),s(74),s(70),s(73),s(70),s(0),s(1),s(1),s(0),u(1),u(1),s(0),s(0)}function f(e,t){u(65472),u(17),s(8),u(t),u(e),s(3),s(1),s(17),s(0),s(2),s(17),s(1),s(3),s(17),s(1)}function d(){u(65499),u(132),s(0);for(var e=0;64>e;e++)s(D[e]);s(1);for(var t=0;64>t;t++)s(x[t])}function h(){u(65476),u(418),s(0);for(var e=0;16>e;e++)s(W[e+1]);for(var t=0;11>=t;t++)s(H[t]);s(16);for(var n=0;16>n;n++)s(z[n+1]);for(var r=0;161>=r;r++)s(q[r]);s(1);for(var i=0;16>i;i++)s(V[i+1]);for(var o=0;11>=o;o++)s(X[o]);s(17);for(var a=0;16>a;a++)s(Q[a+1]);for(var c=0;161>=c;c++)s(Y[c])}function g(){u(65498),u(12),s(3),s(1),s(0),s(2),s(17),s(3),s(17),s(0),s(63),s(0)}function p(e,t,n,r,i){var o,s=i[0],u=i[240];const l=16,f=63,d=64;for(var h=c(e,t),g=0;d>g;++g)R[N[g]]=h[g];var p=R[0]-n;n=R[0],0==p?a(r[0]):(o=32767+p,a(r[A[o]]),a(T[o]));for(var m=63;m>0&&0==R[m];m--);if(0==m)return a(s),n;for(var w,v=1;m>=v;){for(var y=v;0==R[v]&&m>=v;++v);var b=v-y;if(b>=l){w=b>>4;for(var S=1;w>=S;++S)a(u);b=15&b}o=32767+R[v],a(i[(b<<4)+A[o]]),a(T[o]),v++}return m!=f&&a(s),n}function m(){for(var e=String.fromCharCode,t=0;256>t;t++)j[t]=e(t)}function w(e){if(0>=e&&(e=1),e>100&&(e=100),P!=e){var n=0;n=50>e?Math.floor(5e3/e):Math.floor(200-2*e),t(n),P=e}}function v(){var t=(new Date).getTime();e||(e=50),m(),r(),i(),o(),w(e);(new Date).getTime()-t}var y,b,S,I,P,F=(Math.round,Math.floor),D=new Array(64),x=new Array(64),U=new Array(64),C=new Array(64),T=new Array(65535),A=new Array(65535),L=new Array(64),R=new Array(64),M=[],G=0,O=7,_=new Array(64),B=new Array(64),E=new Array(64),j=new Array(256),k=new Array(2048),N=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],W=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],H=[0,1,2,3,4,5,6,7,8,9,10,11],z=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],q=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],V=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],X=[0,1,2,3,4,5,6,7,8,9,10,11],Q=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],Y=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];this.encode=function(e,t,n){var r=(new Date).getTime();t&&w(t),M=new Array,G=0,O=7,u(65496),l(),d(),f(e.width,e.height),h(),g();var i=0,o=0,s=0;G=0,O=7,this.encode.displayName="_encode_";for(var c,m,v,P,F,D,x,T,A,L=e.data,R=e.width,j=e.height,N=4*R,W=0;j>W;){for(c=0;N>c;){for(F=N*W+c,D=F,x=-1,T=0,A=0;64>A;A++)T=A>>3,x=4*(7&A),D=F+T*N+x,W+T>=j&&(D-=N*(W+1+T-j)),c+x>=N&&(D-=c+x-N+4),m=L[D++],v=L[D++],P=L[D++],_[A]=(k[m]+k[v+256>>0]+k[P+512>>0]>>16)-128,B[A]=(k[m+768>>0]+k[v+1024>>0]+k[P+1280>>0]>>16)-128,E[A]=(k[m+1280>>0]+k[v+1536>>0]+k[P+1792>>0]>>16)-128;i=p(_,U,i,y,S),o=p(B,C,o,b,I),s=p(E,C,s,b,I),c+=32}W+=8}if(O>=0){var H=[];H[1]=O+1,H[0]=(1<<O+1)-1,a(H)}if(u(65497),n){for(var z=M.length,q=new Uint8Array(z),V=0;z>V;V++)q[V]=M[V].charCodeAt();M=[];(new Date).getTime()-r;return q}var X="data:image/jpeg;base64,"+btoa(M.join(""));M=[];(new Date).getTime()-r;return X},v()}e.exports=n},function(e,t,n){function r(e,t){var n=this;if(!e)throw new Error("没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7");t=t||{},n.defaults={width:null,height:null,fieldName:"file",quality:.7},n.file=e;for(var r in t)t.hasOwnProperty(r)&&(n.defaults[r]=t[r]);return this.init()}function i(e){var t=null;return t=e?[].filter.call(document.scripts,function(t){return-1!==t.src.indexOf(e)})[0]:document.scripts[document.scripts.length-1],t?t.src.substr(0,t.src.lastIndexOf("/")):null}function o(e){var t;t=e.split(",")[0].indexOf("base64")>=0?atob(e.split(",")[1]):unescape(e.split(",")[1]);for(var n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),i=0;i<t.length;i++)r[i]=t.charCodeAt(i);return new s.Blob([r.buffer],{type:n})}n.p=i("lrz")+"/",window.URL=window.URL||window.webkitURL;var a=n(1),s=n(4),u=n(5),c=function(e){var t=/OS (\d)_.* like Mac OS X/g.exec(e),n=/Android (\d.*?);/g.exec(e)||/Android\/(\d.*?) /g.exec(e);return{oldIOS:t?+t.pop()<8:!1,oldAndroid:n?+n.pop().substr(0,3)<4.5:!1,iOS:/\(i[^;]+;( U;)? CPU.+Mac OS X/.test(e),android:/Android/g.test(e),mQQBrowser:/MQQBrowser/g.test(e)}}(navigator.userAgent);r.prototype.init=function(){var e=this,t=e.file,n="string"==typeof t,r=/^data:/.test(t),i=new Image,u=document.createElement("canvas"),c=n?t:URL.createObjectURL(t);if(e.img=i,e.blob=c,e.canvas=u,n?e.fileName=r?"base64.jpg":t.split("/").pop():e.fileName=t.name,!document.createElement("canvas").getContext)throw new Error("浏览器不支持canvas");return new a(function(n,a){i.onerror=function(){var e=new Error("加载图片文件失败");throw a(e),e},i.onload=function(){e._getBase64().then(function(e){if(e.length<10){var t=new Error("生成base64失败");throw a(t),t}return e}).then(function(r){var i=null;"object"==typeof e.file&&r.length>e.file.size?(i=new FormData,t=e.file):(i=new s.FormData,t=o(r)),i.append(e.defaults.fieldName,t,e.fileName.replace(/\..+/g,".jpg")),n({formData:i,fileLen:+t.size,base64:r,base64Len:r.length,origin:e.file,file:t});for(var a in e)e.hasOwnProperty(a)&&(e[a]=null);URL.revokeObjectURL(e.blob)})},!r&&(i.crossOrigin="*"),i.src=c})},r.prototype._getBase64=function(){var e=this,t=e.img,n=e.file,r=e.canvas;return new a(function(i){try{u.getData("object"==typeof n?n:t,function(){e.orientation=u.getTag(this,"Orientation"),e.resize=e._getResize(),e.ctx=r.getContext("2d"),r.width=e.resize.width,r.height=e.resize.height,e.ctx.fillStyle="#fff",e.ctx.fillRect(0,0,r.width,r.height),c.oldIOS?e._createBase64ForOldIOS().then(i):e._createBase64().then(i)})}catch(o){throw new Error(o)}})},r.prototype._createBase64ForOldIOS=function(){var e=this,t=e.img,r=e.canvas,i=e.defaults,o=e.orientation;return new a(function(e){!function(){var a=[n(6)];(function(n){var a=new n(t);"5678".indexOf(o)>-1?a.render(r,{width:r.height,height:r.width,orientation:o}):a.render(r,{width:r.width,height:r.height,orientation:o}),e(r.toDataURL("image/jpeg",i.quality))}).apply(null,a)}()})},r.prototype._createBase64=function(){var e=this,t=e.resize,r=e.img,i=e.canvas,o=e.ctx,s=e.defaults,u=e.orientation;switch(u){case 3:o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;case 2:o.translate(t.width,0),o.scale(-1,1),o.drawImage(r,0,0,t.width,t.height);break;case 4:o.translate(t.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 5:o.translate(t.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 7:o.translate(t.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;default:o.drawImage(r,0,0,t.width,t.height)}return new a(function(e){c.oldAndroid||c.mQQBrowser||!navigator.userAgent?!function(){var t=[n(7)];(function(t){var n=new t,r=o.getImageData(0,0,i.width,i.height);e(n.encode(r,100*s.quality))}).apply(null,t)}():e(i.toDataURL("image/jpeg",s.quality))})},r.prototype._getResize=function(){var e=this,t=e.img,n=e.defaults,r=n.width,i=n.height,o=e.orientation,a={width:t.width,height:t.height};if("5678".indexOf(o)>-1&&(a.width=t.height,a.height=t.width),a.width<r||a.height<i)return a;var s=a.width/a.height;for(r&&i?s>=r/i?a.width>r&&(a.width=r,a.height=Math.ceil(r/s)):a.height>i&&(a.height=i,a.width=Math.ceil(i*s)):r?r<a.width&&(a.width=r,a.height=Math.ceil(r/s)):i&&i<a.height&&(a.width=Math.ceil(i*s),a.height=i);a.width>=3264||a.height>=2448;)a.width*=.8,a.height*=.8;return a},window.lrz=function(e,t){return new r(e,t)},window.lrz.version="4.9.40",
2 +e.exports=window.lrz}])});
3 +//# sourceMappingURL=lrz.all.bundle.js.map
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n=window.webpackJsonp;window.webpackJsonp=function(r,o){for(var a,s,u=0,l=[];u<r.length;u++)s=r[u],i[s]&&l.push.apply(l,i[s]),i[s]=0;for(a in o)e[a]=o[a];for(n&&n(r,o);l.length;)l.shift().call(null,t)};var r={},i={0:0};return t.e=function(e,n){if(0===i[e])return n.call(null,t);if(void 0!==i[e])i[e].push(n);else{i[e]=[n];var r=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.src=t.p+""+({}[e]||e)+".chunk.js",r.appendChild(o)}},t.m=e,t.c=r,t.p="",t(0)}([function(e,t,n){function r(e,t){var n=this;if(!e)throw new Error("没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7");t=t||{},n.defaults={width:null,height:null,fieldName:"file",quality:.7},n.file=e;for(var r in t)t.hasOwnProperty(r)&&(n.defaults[r]=t[r]);return this.init()}function i(e){var t=null;return t=e?[].filter.call(document.scripts,function(t){return-1!==t.src.indexOf(e)})[0]:document.scripts[document.scripts.length-1],t?t.src.substr(0,t.src.lastIndexOf("/")):null}function o(e){var t;t=e.split(",")[0].indexOf("base64")>=0?atob(e.split(",")[1]):unescape(e.split(",")[1]);for(var n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),i=0;i<t.length;i++)r[i]=t.charCodeAt(i);return new s.Blob([r.buffer],{type:n})}n.p=i("lrz")+"/",window.URL=window.URL||window.webkitURL;var a=n(1),s=n(4),u=n(5),l=function(e){var t=/OS (\d)_.* like Mac OS X/g.exec(e),n=/Android (\d.*?);/g.exec(e)||/Android\/(\d.*?) /g.exec(e);return{oldIOS:t?+t.pop()<8:!1,oldAndroid:n?+n.pop().substr(0,3)<4.5:!1,iOS:/\(i[^;]+;( U;)? CPU.+Mac OS X/.test(e),android:/Android/g.test(e),mQQBrowser:/MQQBrowser/g.test(e)}}(navigator.userAgent);r.prototype.init=function(){var e=this,t=e.file,n="string"==typeof t,r=/^data:/.test(t),i=new Image,u=document.createElement("canvas"),l=n?t:URL.createObjectURL(t);if(e.img=i,e.blob=l,e.canvas=u,n?e.fileName=r?"base64.jpg":t.split("/").pop():e.fileName=t.name,!document.createElement("canvas").getContext)throw new Error("浏览器不支持canvas");return new a(function(n,a){i.onerror=function(){var e=new Error("加载图片文件失败");throw a(e),e},i.onload=function(){e._getBase64().then(function(e){if(e.length<10){var t=new Error("生成base64失败");throw a(t),t}return e}).then(function(r){var i=null;"object"==typeof e.file&&r.length>e.file.size?(i=new FormData,t=e.file):(i=new s.FormData,t=o(r)),i.append(e.defaults.fieldName,t,e.fileName.replace(/\..+/g,".jpg")),n({formData:i,fileLen:+t.size,base64:r,base64Len:r.length,origin:e.file,file:t});for(var a in e)e.hasOwnProperty(a)&&(e[a]=null);URL.revokeObjectURL(e.blob)})},!r&&(i.crossOrigin="*"),i.src=l})},r.prototype._getBase64=function(){var e=this,t=e.img,n=e.file,r=e.canvas;return new a(function(i){try{u.getData("object"==typeof n?n:t,function(){e.orientation=u.getTag(this,"Orientation"),e.resize=e._getResize(),e.ctx=r.getContext("2d"),r.width=e.resize.width,r.height=e.resize.height,e.ctx.fillStyle="#fff",e.ctx.fillRect(0,0,r.width,r.height),l.oldIOS?e._createBase64ForOldIOS().then(i):e._createBase64().then(i)})}catch(o){throw new Error(o)}})},r.prototype._createBase64ForOldIOS=function(){var e=this,t=e.img,r=e.canvas,i=e.defaults,o=e.orientation;return new a(function(e){n.e(1,function(n){var a=[n(6)];(function(n){var a=new n(t);"5678".indexOf(o)>-1?a.render(r,{width:r.height,height:r.width,orientation:o}):a.render(r,{width:r.width,height:r.height,orientation:o}),e(r.toDataURL("image/jpeg",i.quality))}).apply(null,a)})})},r.prototype._createBase64=function(){var e=this,t=e.resize,r=e.img,i=e.canvas,o=e.ctx,s=e.defaults,u=e.orientation;switch(u){case 3:o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;case 2:o.translate(t.width,0),o.scale(-1,1),o.drawImage(r,0,0,t.width,t.height);break;case 4:o.translate(t.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 5:o.translate(t.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 7:o.translate(t.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;default:o.drawImage(r,0,0,t.width,t.height)}return new a(function(e){l.oldAndroid||l.mQQBrowser||!navigator.userAgent?n.e(2,function(t){var n=[t(7)];(function(t){var n=new t,r=o.getImageData(0,0,i.width,i.height);e(n.encode(r,100*s.quality))}).apply(null,n)}):e(i.toDataURL("image/jpeg",s.quality))})},r.prototype._getResize=function(){var e=this,t=e.img,n=e.defaults,r=n.width,i=n.height,o=e.orientation,a={width:t.width,height:t.height};if("5678".indexOf(o)>-1&&(a.width=t.height,a.height=t.width),a.width<r||a.height<i)return a;var s=a.width/a.height;for(r&&i?s>=r/i?a.width>r&&(a.width=r,a.height=Math.ceil(r/s)):a.height>i&&(a.height=i,a.width=Math.ceil(i*s)):r?r<a.width&&(a.width=r,a.height=Math.ceil(r/s)):i&&i<a.height&&(a.width=Math.ceil(i*s),a.height=i);a.width>=3264||a.height>=2448;)a.width*=.8,a.height*=.8;return a},window.lrz=function(e,t){return new r(e,t)},window.lrz.version="4.9.40",e.exports=window.lrz},function(e,t,n){(function(t){!function(n){function r(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],c(e,r(a,this),r(s,this))}function o(e){var t=this;return null===this._state?void this._deferreds.push(e):void f(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void c(r(t,e),r(a,this),r(s,this))}this._state=!0,this._value=e,u.call(this)}catch(n){s.call(this,n)}}function s(e){this._state=!1,this._value=e,u.call(this)}function u(){for(var e=0,t=this._deferreds.length;t>e;e++)o.call(this,this._deferreds[e]);this._deferreds=null}function l(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function c(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}var f="function"==typeof t&&t||function(e){setTimeout(e,1)},d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=this;return new i(function(r,i){o.call(n,new l(e,t,r,i))})},i.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&d(arguments[0])?arguments[0]:arguments);return new i(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(e){return new i(function(t,n){n(e)})},i.race=function(e){return new i(function(t,n){for(var r=0,i=e.length;i>r;r++)e[r].then(t,n)})},i._setImmediateFn=function(e){f=e},i.prototype.always=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},"undefined"!=typeof e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(2).setImmediate)},function(e,t,n){(function(e,r){function i(e,t){this._id=e,this._clearFn=t}var o=n(3).nextTick,a=Function.prototype.apply,s=Array.prototype.slice,u={},l=0;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=l++,r=arguments.length<2?!1:s.call(arguments,1);return u[n]=!0,o(function(){u[n]&&(r?e.apply(null,r):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof r?r:function(e){delete u[e]}}).call(t,n(2).setImmediate,n(2).clearImmediate)},function(e,t){function n(){l=!1,a.length?u=a.concat(u):c=-1,u.length&&r()}function r(){if(!l){var e=setTimeout(n);l=!0;for(var t=u.length;t;){for(a=u,u=[];++c<t;)a&&a[c].run();c=-1,t=u.length}a=null,l=!1,clearTimeout(e)}}function i(e,t){this.fun=e,this.array=t}function o(){}var a,s=e.exports={},u=[],l=!1,c=-1;s.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new i(e,t)),1!==u.length||l||setTimeout(r,0)},i.prototype.run=function(){this.fun.apply(null,this.array)},s.title="browser",s.browser=!0,s.env={},s.argv=[],s.version="",s.versions={},s.on=o,s.addListener=o,s.once=o,s.off=o,s.removeListener=o,s.removeAllListeners=o,s.emit=o,s.binding=function(e){throw new Error("process.binding is not supported")},s.cwd=function(){return"/"},s.chdir=function(e){throw new Error("process.chdir is not supported")},s.umask=function(){return 0}},function(e,t){function n(){var e=~navigator.userAgent.indexOf("Android")&&~navigator.vendor.indexOf("Google")&&!~navigator.userAgent.indexOf("Chrome");return e&&navigator.userAgent.match(/AppleWebKit\/(\d+)/).pop()<=534||/MQQBrowser/g.test(navigator.userAgent)}var r=function(){try{return new Blob,!0}catch(e){return!1}}()?window.Blob:function(e,t){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MSBlobBuilder||window.MozBlobBuilder);return e.forEach(function(e){n.append(e)}),n.getBlob(t?t.type:void 0)},i=function(){function e(){var e=this,n=[],i=Array(21).join("-")+(+new Date*(1e16*Math.random())).toString(36),o=XMLHttpRequest.prototype.send;this.getParts=function(){return n.toString()},this.append=function(e,t,r){n.push("--"+i+'\r\nContent-Disposition: form-data; name="'+e+'"'),t instanceof Blob?(n.push('; filename="'+(r||"blob")+'"\r\nContent-Type: '+t.type+"\r\n\r\n"),n.push(t)):n.push("\r\n\r\n"+t),n.push("\r\n")},t++,XMLHttpRequest.prototype.send=function(a){var s,u,l=this;a===e?(n.push("--"+i+"--\r\n"),u=new r(n),s=new FileReader,s.onload=function(){o.call(l,s.result)},s.onerror=function(e){throw e},s.readAsArrayBuffer(u),this.setRequestHeader("Content-Type","multipart/form-data; boundary="+i),t--,0==t&&(XMLHttpRequest.prototype.send=o)):o.call(this,a)}}var t=0;return e.prototype=Object.create(FormData.prototype),e}();e.exports={Blob:r,FormData:n()?i:FormData}},function(e,t,n){var r,i;(function(){function n(e){return!!e.exifdata}function o(e,t){t=t||e.match(/^data\:([^\;]+)\;base64,/im)[1]||"",e=e.replace(/^data\:([^\;]+)\;base64,/gim,"");for(var n=atob(e),r=n.length,i=new ArrayBuffer(r),o=new Uint8Array(i),a=0;r>a;a++)o[a]=n.charCodeAt(a);return i}function a(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){(200==this.status||0===this.status)&&t(this.response)},n.send()}function s(e,t){function n(n){var r=u(n),i=l(n);e.exifdata=r||{},e.iptcdata=i||{},t&&t.call(e)}if(e.src)if(/^data\:/i.test(e.src)){var r=o(e.src);n(r)}else if(/^blob\:/i.test(e.src)){var i=new FileReader;i.onload=function(e){n(e.target.result)},a(e.src,function(e){i.readAsArrayBuffer(e)})}else{var s=new XMLHttpRequest;s.onload=function(){200==this.status||0===this.status?n(s.response):t(new Error("Could not load image")),s=null},s.open("GET",e.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var i=new FileReader;i.onload=function(e){p&&console.log("Got file of length "+e.target.result.byteLength),n(e.target.result)},i.readAsArrayBuffer(e)}}function u(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n,r=2,i=e.byteLength;i>r;){if(255!=t.getUint8(r))return p&&console.log("Not a valid marker at offset "+r+", found: "+t.getUint8(r)),!1;if(n=t.getUint8(r+1),p&&console.log(n),225==n)return p&&console.log("Found 0xFFE1 marker"),g(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function l(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>n;){if(i(t,n)){var o=t.getUint8(n+7);o%2!==0&&(o+=1),0===o&&(o=4);var a=n+8+o,s=t.getUint16(n+6+o);return c(e,a,s)}n++}}function c(e,t,n){for(var r,i,o,a,s,u=new DataView(e),l={},c=t;t+n>c;)28===u.getUint8(c)&&2===u.getUint8(c+1)&&(a=u.getUint8(c+2),a in b&&(o=u.getInt16(c+3),s=o+5,i=b[a],r=h(u,c+5,o),l.hasOwnProperty(i)?l[i]instanceof Array?l[i].push(r):l[i]=[l[i],r]:l[i]=r)),c++;return l}function f(e,t,n,r,i){var o,a,s,u=e.getUint16(n,!i),l={};for(s=0;u>s;s++)o=n+12*s+2,a=r[e.getUint16(o,!i)],!a&&p&&console.log("Unknown tag: "+e.getUint16(o,!i)),l[a]=d(e,o,t,n,i);return l}function d(e,t,n,r,i){var o,a,s,u,l,c,f=e.getUint16(t+2,!i),d=e.getUint32(t+4,!i),g=e.getUint32(t+8,!i)+n;switch(f){case 1:case 7:if(1==d)return e.getUint8(t+8,!i);for(o=d>4?g:t+8,a=[],u=0;d>u;u++)a[u]=e.getUint8(o+u);return a;case 2:return o=d>4?g:t+8,h(e,o,d-1);case 3:if(1==d)return e.getUint16(t+8,!i);for(o=d>2?g:t+8,a=[],u=0;d>u;u++)a[u]=e.getUint16(o+2*u,!i);return a;case 4:if(1==d)return e.getUint32(t+8,!i);for(a=[],u=0;d>u;u++)a[u]=e.getUint32(g+4*u,!i);return a;case 5:if(1==d)return l=e.getUint32(g,!i),c=e.getUint32(g+4,!i),s=new Number(l/c),s.numerator=l,s.denominator=c,s;for(a=[],u=0;d>u;u++)l=e.getUint32(g+8*u,!i),c=e.getUint32(g+4+8*u,!i),a[u]=new Number(l/c),a[u].numerator=l,a[u].denominator=c;return a;case 9:if(1==d)return e.getInt32(t+8,!i);for(a=[],u=0;d>u;u++)a[u]=e.getInt32(g+4*u,!i);return a;case 10:if(1==d)return e.getInt32(g,!i)/e.getInt32(g+4,!i);for(a=[],u=0;d>u;u++)a[u]=e.getInt32(g+8*u,!i)/e.getInt32(g+4+8*u,!i);return a}}function h(e,t,n){var r,i="";for(r=t;t+n>r;r++)i+=String.fromCharCode(e.getUint8(r));return i}function g(e,t){if("Exif"!=h(e,t,4))return p&&console.log("Not valid EXIF data! "+h(e,t,4)),!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return p&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;n=!0}if(42!=e.getUint16(s+2,!n))return p&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var u=e.getUint32(s+4,!n);if(8>u)return p&&console.log("Not valid TIFF data! (First offset less than 8)",e.getUint32(s+4,!n)),!1;if(r=f(e,s,s+u,y,n),r.ExifIFDPointer){o=f(e,s,s+r.ExifIFDPointer,w,n);for(i in o){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=S[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=S.Components[o[i][0]]+S.Components[o[i][1]]+S.Components[o[i][2]]+S.Components[o[i][3]]}r[i]=o[i]}}if(r.GPSInfoIFDPointer){a=f(e,s,s+r.GPSInfoIFDPointer,v,n);for(i in a){switch(i){case"GPSVersionID":a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}r[i]=a[i]}}return r}var p=!1,m=function(e){return e instanceof m?e:this instanceof m?void(this.EXIFwrapped=e):new m(e)};"undefined"!=typeof e&&e.exports&&(t=e.exports=m),t.EXIF=m;var w=m.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},y=m.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},v=m.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},S=m.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}},b={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};m.getData=function(e,t){return(e instanceof Image||e instanceof HTMLImageElement)&&!e.complete?!1:(n(e)?t&&t.call(e):s(e,t),!0)},m.getTag=function(e,t){return n(e)?e.exifdata[t]:void 0},m.getAllTags=function(e){if(!n(e))return{};var t,r=e.exifdata,i={};for(t in r)r.hasOwnProperty(t)&&(i[t]=r[t]);return i},m.pretty=function(e){if(!n(e))return"";var t,r=e.exifdata,i="";for(t in r)r.hasOwnProperty(t)&&(i+="object"==typeof r[t]?r[t]instanceof Number?t+" : "+r[t]+" ["+r[t].numerator+"/"+r[t].denominator+"]\r\n":t+" : ["+r[t].length+" values]\r\n":t+" : "+r[t]+"\r\n");return i},m.readFromBinaryFile=function(e){return u(e)},r=[],i=function(){return m}.apply(t,r),!(void 0!==i&&(e.exports=i))}).call(this)}])});
2 +//# sourceMappingURL=lrz.bundle.js.map
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +1. 一般情况仅需引用 【lrz.bundle.js】 即可。
2 +但绝对不要删除目录下的【*.chunk.js】,这些文件分别对应了IOS和Android的兼容代码,检测到符合环境时会自动引入。
3 +
4 +2. 【lrz.all.bundle.js】是包含了所有引用了,莫名其妙的问题下就引用这个吧。
5 +例如:https://github.com/think2011/localResizeIMG/issues/6
6 +
7 +3. 【*.map】文件是供调试用的,正式使用删不删除都没关系,因为仅在调试时才会载入。
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
22 "gm": "^1.23.0", 22 "gm": "^1.23.0",
23 "lodash": "^4.16.5", 23 "lodash": "^4.16.5",
24 "log4js": "^0.6.38", 24 "log4js": "^0.6.38",
25 + "lrz": "^4.9.40",
25 "node-uuid": "^1.4.7", 26 "node-uuid": "^1.4.7",
26 "redis": "^2.6.3", 27 "redis": "^2.6.3",
27 "sequelize": "^3.24.6" 28 "sequelize": "^3.24.6"
......
...@@ -16,6 +16,7 @@ const loggers = require('./init/log4js-init'); ...@@ -16,6 +16,7 @@ const loggers = require('./init/log4js-init');
16 16
17 var ROOT_PATH = process.cwd(); 17 var ROOT_PATH = process.cwd();
18 app.use('/lib/', express.static(ROOT_PATH + '/lib')); 18 app.use('/lib/', express.static(ROOT_PATH + '/lib'));
19 +app.use('/test/', express.static(ROOT_PATH + '/test'));
19 20
20 app.get('/', function(req, res){ 21 app.get('/', function(req, res){
21 res.sendFile(ROOT_PATH + '/index.html'); 22 res.sendFile(ROOT_PATH + '/index.html');
......
1 +<!doctype html>
2 +<html lang="zh-cn">
3 +<meta name="viewport" content="width=device-width, user-scalable=no">
4 +<head>
5 + <meta charset="UTF-8">
6 + <title>lrz4 demo&test</title>
7 +
8 + <link rel="stylesheet" href="../lib/bootstrap/3.3.5/css/bootstrap.min.css"/>
9 + <style>
10 + img {
11 + width: 100%;
12 + max-width: 320px;
13 + padding: 10px 15px;
14 + }
15 +
16 + .tip {
17 + position: relative;
18 + top: 15px;
19 + right: 10px;
20 + }
21 + </style>
22 +</head>
23 +<body>
24 +<div class="navbar navbar-default">
25 + <div class="pull-right tip text-muted">遇到问题时请截图到 <a
26 + href="https://github.com/think2011/localResizeIMG/issues">issues</a>
27 + </div>
28 + <div class="container">
29 + <div class="navbar-header">
30 + <a href="./" class="navbar-brand">Lrz4</a>
31 + </div>
32 + </div>
33 +</div>
34 +
35 +<div class="container">
36 +
37 + <div class="row">
38 + <div class="col-xs-12 text-center">
39 + <h3 style="margin-top: 0;">上传图片测试</h3>
40 + <small><a href="server.html">切换至带服务端演示</a></small>
41 + <br>
42 + <small class="text-muted">配置:宽度不超过800,高度适应,70%压缩率</small>
43 + <br>
44 + <small class="text-muted UA">UA</small>
45 + <hr/>
46 + </div>
47 +
48 + <div id="upload-container" class="col-xs-12 text-center">
49 + <input accept="image/*" type="file"/>
50 + </div>
51 +
52 + <div class="col-xs-12 text-center">
53 + <hr/>
54 + <h3>旋转方向测试</h3>
55 + <small class="text-muted">看到的图像应该全是一个方向的,没见到图片是出问题了</small>
56 + <hr/>
57 + </div>
58 +
59 + <div class="col-xs-6 text-center">
60 + <img data-src="img/orientation_1.JPG?v=49ec2ec"
61 + src="http://placehold.it/1x1" alt="点击载入"/>
62 +
63 + <p>方向为【1】的图片</p>
64 + </div>
65 + <div class="col-xs-6 text-center">
66 + <img data-src="img/orientation_3.JPG?v=c393d29"
67 + src="http://placehold.it/1x1" alt="点击载入"/>
68 +
69 + <p>方向为【3】的图片</p>
70 + </div>
71 + <div class="col-xs-6 text-center">
72 + <img data-src="img/orientation_6.JPG?v=cd9d967"
73 + src="http://placehold.it/1x1" alt="点击载入"/>
74 +
75 + <p>方向为【6】的图片</p>
76 + </div>
77 + <div class="col-xs-6 text-center">
78 + <img data-src="img/orientation_8.JPG?v=619646c"
79 + src="http://placehold.it/1x1" alt="点击载入"/>
80 +
81 + <p>方向为【8】的图片</p>
82 + </div>
83 + </div>
84 +</div>
85 +
86 +<footer class="text-center">
87 + <hr/>
88 + <p class="text-muted"><a href="https://github.com/think2011/localResizeIMG">
89 + localResizeIMG(<span id="version"></span>版) by think2011</a>
90 + </p>
91 +</footer>
92 +
93 +
94 +<script src="../lib/lrz/lrz.bundle.js"></script>
95 +<script src="./index.js?v=27ce5f7"></script>
96 +</body>
97 +</html>
1 +window.onerror = function (errMsg, scriptURI, lineNumber, columnNumber, errorObj) {
2 + setTimeout(function () {
3 + var rst = {
4 + "错误信息:": errMsg,
5 + "出错文件:": scriptURI,
6 + "出错行号:": lineNumber,
7 + "出错列号:": columnNumber,
8 + "错误详情:": errorObj
9 + };
10 +
11 + console.log('出错了,下一步将显示错误信息');
12 + console.log(JSON.stringify(rst, null, 10));
13 + });
14 +};
15 +
16 +
17 +[].forEach.call(document.querySelectorAll('[data-src]'), function (el) {
18 + (function (el) {
19 + el.addEventListener('click', function () {
20 + el.src = 'img/loading.gif';
21 +
22 + lrz(el.dataset.src)
23 + .then(function (rst) {
24 + el.src = rst.base64;
25 +
26 +
27 + return rst;
28 + });
29 + });
30 +
31 + fireEvent(el, 'click');
32 + })(el);
33 +});
34 +
35 +
36 +document.querySelector('input').addEventListener('change', function () {
37 + var that = this;
38 +
39 + lrz(that.files[0], {
40 + width: 800
41 + })
42 + .then(function (rst) {
43 + var img = new Image(),
44 + div = document.createElement('div'),
45 + p = document.createElement('p'),
46 + sourceSize = toFixed2(that.files[0].size / 1024),
47 + resultSize = toFixed2(rst.fileLen / 1024),
48 + scale = parseInt(100 - (resultSize / sourceSize * 100));
49 +
50 + p.style.fontSize = 13 + 'px';
51 + p.innerHTML = '源文件:<span class="text-danger">' +
52 + sourceSize + 'KB' +
53 + '</span> <br />' +
54 + '压缩后传输大小:<span class="text-success">' +
55 + resultSize + 'KB (省' + scale + '%)' +
56 + '</span> ';
57 +
58 + div.className = 'col-sm-6';
59 + div.appendChild(img);
60 + div.appendChild(p);
61 +
62 + img.onload = function () {
63 + document.querySelector('#upload-container').appendChild(div);
64 + };
65 +
66 + img.src = rst.base64;
67 +
68 + /* /!* ==================================================== *!/
69 + // 原生ajax上传代码,所以看起来特别多 ╮(╯_╰)╭,但绝对能用
70 + // 其他框架,例如ajax处理formData略有不同,请自行google,baidu。
71 + var xhr = new XMLHttpRequest();
72 + xhr.open('POST', '/upload');
73 +
74 + xhr.onload = function () {
75 + if (xhr.status === 200) {
76 + // 上传成功
77 + } else {
78 + // 处理其他情况
79 + }
80 + };
81 +
82 + xhr.onerror = function () {
83 + // 处理错误
84 + };
85 +
86 + // issues #45 提到似乎有兼容性问题,关于progress
87 + xhr.upload.onprogress = function (e) {
88 + // 上传进度
89 + var percentComplete = ((e.loaded / e.total) || 0) * 100;
90 + };
91 +
92 + // 添加参数和触发上传
93 + rst.formData.append('a', '我是参数');
94 + xhr.send(rst.formData);
95 + /!* ==================================================== *!/*/
96 +
97 + return rst;
98 + });
99 +});
100 +
101 +document.querySelector('#version').innerHTML = lrz.version;
102 +document.querySelector('.UA').innerHTML = 'UA: ' + navigator.userAgent;
103 +
104 +function toFixed2 (num) {
105 + return parseFloat(+num.toFixed(2));
106 +}
107 +
108 +/**
109 + * 替换字符串 !{}
110 + * @param obj
111 + * @returns {String}
112 + * @example
113 + * '我是!{str}'.render({str: '测试'});
114 + */
115 +String.prototype.render = function (obj) {
116 + var str = this, reg;
117 +
118 + Object.keys(obj).forEach(function (v) {
119 + reg = new RegExp('\\!\\{' + v + '\\}', 'g');
120 + str = str.replace(reg, obj[v]);
121 + });
122 +
123 + return str;
124 +};
125 +
126 +/**
127 + * 触发事件 - 只是为了兼容演示demo而已
128 + * @param element
129 + * @param event
130 + * @returns {boolean}
131 + */
132 +function fireEvent (element, event) {
133 + var evt;
134 +
135 + if (document.createEventObject) {
136 + // IE浏览器支持fireEvent方法
137 + evt = document.createEventObject();
138 + return element.fireEvent('on' + event, evt)
139 + }
140 + else {
141 + // 其他标准浏览器使用dispatchEvent方法
142 + evt = document.createEvent('HTMLEvents');
143 + // initEvent接受3个参数:
144 + // 事件类型,是否冒泡,是否阻止浏览器的默认行为
145 + evt.initEvent(event, true, true);
146 + return !element.dispatchEvent(evt);
147 + }
148 +}
149 +
150 +/**
151 + *
152 + *    ┏┓   ┏┓
153 + *   ┏┛┻━━━┛┻┓
154 + *   ┃       ┃
155 + *   ┃   ━   ┃
156 + *   ┃ ┳┛ ┗┳ ┃
157 + *   ┃       ┃
158 + *   ┃   ┻   ┃
159 + *   ┃       ┃
160 + *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting
161 + *     ┃   ┃ 神兽保佑,代码无bug
162 + *     ┃   ┃
163 + *     ┃   ┗━━━┓
164 + *     ┃      ┣┓
165 + *     ┃     ┏┛
166 + *     ┗┓┓┏━┳┓┏┛
167 + *      ┃┫┫ ┃┫┫
168 + *      ┗┻┛ ┗┻┛
169 + *
170 + */
1 +var lrz = require('lrz');
2 +var expect = chai.expect;
3 +
4 +describe("测试压缩正常运作", function () {
5 +
6 + it("基本例子:传入路径", function () {
7 + return lrz('base/test/img/transparent_png.png')
8 + .then(function (rst) {
9 + expect(rst).to.all.keys('formData', 'origin', 'base64', 'fileLen', 'base64Len', 'file');
10 + });
11 + });
12 +
13 + it("基本例子:传入base64", function () {
14 + var base64 = 'data:image/png;base64,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';
15 +
16 + return lrz(base64)
17 + .then(function (rst) {
18 + expect(rst).to.all.keys('formData', 'origin', 'base64', 'fileLen', 'base64Len', 'file');
19 + });
20 + });
21 +});
...\ No newline at end of file ...\ No newline at end of file
1 +<!doctype html>
2 +<html lang="zh-cn">
3 +<meta name="viewport" content="width=device-width, user-scalable=no">
4 +<head>
5 + <meta charset="UTF-8">
6 + <title>lrz4 demo&test</title>
7 +
8 + <link rel="stylesheet" href="../lib/bootstrap/3.3.5/css/bootstrap.min.css"/>
9 + <style>
10 + img {
11 + width: 100%;
12 + max-width: 320px;
13 + padding: 10px 15px;
14 + }
15 +
16 + .tip {
17 + position: relative;
18 + top: 15px;
19 + right: 10px;
20 + }
21 + </style>
22 +</head>
23 +<body>
24 +<div class="navbar navbar-default">
25 + <div class="pull-right tip text-muted">遇到问题时请截图到 <a
26 + href="https://github.com/think2011/localResizeIMG/issues">issues</a>
27 + </div>
28 + <div class="container">
29 + <div class="navbar-header">
30 + <a href="./" class="navbar-brand">Lrz4 </a>
31 + </div>
32 + </div>
33 +</div>
34 +
35 +<div class="container">
36 + <div class="row">
37 + <div class="col-xs-12 text-center">
38 + <h3 style="margin-top: 0;">上传图片测试</h3>
39 + <small><a href="index.html">切换至无服务端演示</a></small>
40 + <div>
41 + <progress value="0" max="100"></progress>
42 + </div>
43 +
44 + <small class="text-muted">配置:宽度不超过800,高度适应,70%压缩率</small>
45 + <br/>
46 + <small class="text-muted">演示服务端是跨域上传且免费的,所以较慢,请耐心等待..</small>
47 + <br/>
48 + <small class="text-muted UA">UA</small>
49 + <hr/>
50 + </div>
51 +
52 + <div id="upload-container" class="col-xs-12 text-center">
53 + <input accept="image/*" type="file"/>
54 + </div>
55 +
56 + <div class="col-xs-12 text-center">
57 + <hr/>
58 + <h3>旋转方向测试</h3>
59 + <small class="text-muted">看到的图像应该全是一个方向的,没见到图片是出问题了</small>
60 + <hr/>
61 + </div>
62 +
63 + <div class="col-xs-6 text-center">
64 + <img data-src="img/orientation_1.JPG?v=49ec2ec"
65 + src="http://placehold.it/1x1" alt="点击载入"/>
66 +
67 + <p>方向为【1】的图片</p>
68 + </div>
69 + <div class="col-xs-6 text-center">
70 + <img data-src="img/orientation_3.JPG?v=c393d29"
71 + src="http://placehold.it/1x1" alt="点击载入"/>
72 +
73 + <p>方向为【3】的图片</p>
74 + </div>
75 + <div class="col-xs-6 text-center">
76 + <img data-src="img/orientation_6.JPG?v=cd9d967"
77 + src="http://placehold.it/1x1" alt="点击载入"/>
78 +
79 + <p>方向为【6】的图片</p>
80 + </div>
81 + <div class="col-xs-6 text-center">
82 + <img data-src="img/orientation_8.JPG?v=619646c"
83 + src="http://placehold.it/1x1" alt="点击载入"/>
84 +
85 + <p>方向为【8】的图片</p>
86 + </div>
87 + </div>
88 +</div>
89 +
90 +<footer class="text-center">
91 + <hr/>
92 + <p class="text-muted"><a href="https://github.com/think2011/localResizeIMG">
93 + localResizeIMG(<span id="version"></span>版) by think2011</a>
94 + </p>
95 +</footer>
96 +
97 +
98 +<script src="../lib/lrz/lrz.bundle.js"></script>
99 +<script src="./server.js?v=c8aaa97"></script>
100 +</body>
101 +</html>
1 +window.onerror = function (errMsg, scriptURI, lineNumber, columnNumber, errorObj) {
2 + setTimeout(function () {
3 + var rst = {
4 + "错误信息:": errMsg,
5 + "出错文件:": scriptURI,
6 + "出错行号:": lineNumber,
7 + "出错列号:": columnNumber,
8 + "错误详情:": errorObj
9 + };
10 +
11 + console.log('出错了,下一步将显示错误信息');
12 + console.log(JSON.stringify(rst, null, 10));
13 + });
14 +};
15 +
16 +
17 +[].forEach.call(document.querySelectorAll('[data-src]'), function (el) {
18 + (function (el) {
19 + el.addEventListener('click', function () {
20 + el.src = 'img/loading.gif';
21 +
22 + lrz(el.dataset.src)
23 + .then(function (rst) {
24 + el.src = rst.base64;
25 +
26 +
27 + return rst;
28 + });
29 + });
30 +
31 + fireEvent(el, 'click');
32 + })(el);
33 +});
34 +
35 +
36 +document.querySelector('input').addEventListener('change', function () {
37 + var that = this,
38 + progress = document.querySelector('progress');
39 +
40 + lrz(that.files[0], {
41 + width: 1024
42 + })
43 + .then(function (rst) {
44 + var img = new Image(),
45 + div = document.createElement('div'),
46 + p = document.createElement('p'),
47 + sourceSize = toFixed2(that.files[0].size / 1024),
48 + resultSize = toFixed2(rst.fileLen / 1024),
49 + effect = parseInt(100 - (resultSize / sourceSize * 100));
50 +
51 + p.style.fontSize = 13 + 'px';
52 + p.innerHTML = '源文件:<span class="text-danger">!{sourceSize}KB</span> <br>压缩后传输大小:<span class="text-success">!{resultSize}KB (省!{effect}%)</span> '.render({
53 + sourceSize: sourceSize,
54 + resultSize: resultSize,
55 + effect : effect
56 + });
57 +
58 + div.className = 'col-sm-6';
59 + div.appendChild(img);
60 + div.appendChild(p);
61 +
62 + img.onload = function () {
63 + document.querySelector('#upload-container').appendChild(div);
64 + };
65 +
66 + progress.value = 0;
67 +
68 + /* ==================================================== */
69 + // 原生ajax上传代码,所以看起来特别多 ╮(╯_╰)╭,但绝对能用
70 + // 其他框架,例如ajax处理formData略有不同,请自行google,baidu。
71 + var xhr = new XMLHttpRequest();
72 + xhr.open('POST', '/upload');
73 +
74 + xhr.onload = function () {
75 + var data = JSON.parse(xhr.response);
76 +
77 + if (xhr.status === 200) {
78 + // 上传成功
79 + img.src = rst.base64;
80 + progress.value = 0;
81 + } else {
82 + // 处理错误
83 + console.log(data.msg);
84 +
85 + div.remove();
86 + that.value = null;
87 + }
88 + };
89 +
90 + xhr.onerror = function (err) {
91 + console.log('未知错误:' + JSON.stringify(err, null, 2));
92 + div.remove();
93 + that.value = null;
94 + };
95 +
96 + // issues #45 提到似乎有兼容性问题,关于progress
97 + if (xhr.upload) {
98 + try {
99 + xhr.upload.addEventListener('progress', function (e) {
100 + if (!e.lengthComputable) return false;
101 +
102 + // 上传进度
103 + progress.value = ((e.loaded / e.total) || 0) * 100;
104 + });
105 + } catch (err) {
106 + console.error('进度展示出错了,似乎不支持此特性?', err);
107 + }
108 + }
109 +
110 + // 添加参数
111 + rst.formData.append('fileLen', rst.fileLen);
112 + rst.formData.append('xxx', '我是其他参数');
113 +
114 + // 触发上传
115 + xhr.send(rst.formData);
116 + /* ==================================================== */
117 +
118 + return rst;
119 + });
120 +});
121 +
122 +document.querySelector('#version').innerHTML = lrz.version;
123 +document.querySelector('.UA').innerHTML = 'UA: ' + navigator.userAgent;
124 +
125 +function toFixed2 (num) {
126 + return parseFloat(+num.toFixed(2));
127 +}
128 +
129 +/**
130 + * 替换字符串 !{}
131 + * @param obj
132 + * @returns {String}
133 + * @example
134 + * '我是!{str}'.render({str: '测试'});
135 + */
136 +String.prototype.render = function (obj) {
137 + var str = this, reg;
138 +
139 + Object.keys(obj).forEach(function (v) {
140 + reg = new RegExp('\\!\\{' + v + '\\}', 'g');
141 + str = str.replace(reg, obj[v]);
142 + });
143 +
144 + return str;
145 +};
146 +
147 +/**
148 + * 触发事件 - 只是为了兼容演示demo而已
149 + * @param element
150 + * @param event
151 + * @returns {boolean}
152 + */
153 +function fireEvent (element, event) {
154 + var evt;
155 +
156 + if (document.createEventObject) {
157 + // IE浏览器支持fireEvent方法
158 + evt = document.createEventObject();
159 + return element.fireEvent('on' + event, evt)
160 + }
161 + else {
162 + // 其他标准浏览器使用dispatchEvent方法
163 + evt = document.createEvent('HTMLEvents');
164 + // initEvent接受3个参数:
165 + // 事件类型,是否冒泡,是否阻止浏览器的默认行为
166 + evt.initEvent(event, true, true);
167 + return !element.dispatchEvent(evt);
168 + }
169 +}
170 +
171 +/**
172 + * 替换字符串 !{}
173 + * @param obj
174 + * @returns {String}
175 + * @example
176 + * '我是!{str}'.render({str: '测试'});
177 + */
178 +String.prototype.render = function (obj) {
179 + var str = this, reg;
180 +
181 + Object.keys(obj).forEach(function (v) {
182 + reg = new RegExp('\\!\\{' + v + '\\}', 'g');
183 + str = str.replace(reg, obj[v]);
184 + });
185 +
186 + return str;
187 +};
188 +
189 +
190 +if (!('remove' in Element.prototype)) {
191 + Element.prototype.remove = function () {
192 + this.parentNode.removeChild(this);
193 + };
194 +}
195 +
196 +/**
197 + *
198 + *    ┏┓   ┏┓
199 + *   ┏┛┻━━━┛┻┓
200 + *   ┃       ┃
201 + *   ┃   ━   ┃
202 + *   ┃ ┳┛ ┗┳ ┃
203 + *   ┃       ┃
204 + *   ┃   ┻   ┃
205 + *   ┃       ┃
206 + *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting
207 + *     ┃   ┃ 神兽保佑,代码无bug
208 + *     ┃   ┃
209 + *     ┃   ┗━━━┓
210 + *     ┃      ┣┓
211 + *     ┃     ┏┛
212 + *     ┗┓┓┏━┳┓┏┛
213 + *      ┃┫┫ ┃┫┫
214 + *      ┗┻┛ ┗┻┛
215 + *
216 + */