-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
1 lines (1 loc) · 3.91 KB
/
index.html
1
<canvas id="c" width="180" height="40"></canvas><input type="file" id="d" accept="image/*"><script>var O=function(){function t(r){if(M<I.length){for(var n=b[1],e=I[M],a=[],o=O[e[4]],f=e[1];f<e[1]+e[3];f++)for(var i=e[0];i<e[0]+e[2];i++)if(o.hasOwnProperty(i+","+f))var h=v(n[f*m+i]),a=a.a(h,h,h,255);else a=a.a(255,255,255,255);for(n=a,o=I[M][2],e=(180-o)/2,a=(40-n.length/(4*o))/2,s.fillStyle="white",s.fillRect(0,0,180,40),o=s.getImageData(0,0,o,n.length/(4*o)),f=0;f<n.length;f++)o.data[f]=n[f];s.putImageData(o,e,a),M++,setTimeout(t,r,r)}}function r(t,r){var n=t.target.files;if(0<n.length){var e=URL.createObjectURL(n[0]);i(e,function(t,n){if(n>t.length/(4*n)){y=[];for(var a=0;n>a;a++)for(var o=t.length/(4*n)-1;o>=0;o--){var f=4*(o*n+a);y.p(t[f]),y.p(t[f+1]),y.p(t[f+2]),y.p(t[f+3])}m=t.length/(4*n),w=n}else y=t,m=n,w=t.length/(4*n);URL.revokeObjectURL(e),r()})}}function n(t){for(var r=[],n=0;n<t.length;n++)r.p(0);for(var e=[],a=-4;4>=a;a++){e.p([]);for(var o=-4;4>=o;o++)e[a+4].p(.1*Math.exp(-(a*a)/2-o*o/5))}for(n=0;n<t.length;n++)if(0===t[n])for(var f=v(n/m),i=n%m,a=g(f-4,0);a<=l(f+4,w-1);a++)for(o=g(i-4,0);o<=l(i+4,m-1);o++)r[a*m+o]+=4*e[a+4-f][o+4-i];for(n=0;n<r.length;n++)r[n]=.7<r[n]?0:1;return r}function e(t){for(var r=[],n=0;n<t.length;n++)r.p(0);for(var e=1,n=0;n<t.length;n++)if(0===r[n]&&1!==t[n]){for(var a=function(n){.5>t[n]&&0===r[n]&&(r[n]=e,o.p(n))},o=[n],f=0;f<o.length;){var i=o[f],h=v(i/m),i=i%m;if(w>h+1){var u=(h+1)*m+i;a(u)}h-1>=0&&(u=(h-1)*m+i,a(u)),i-1>=0&&(u=h*m+i-1,a(u)),m>i+1&&(u=h*m+i+1,a(u)),f++}e++}return r}function a(t,r){var n={};t.r(function(t,e){if(0!==t){var a=e%r,o=v(e/r);n.hasOwnProperty(t)||(n[t]={}),n[t][a+","+o]=!0}});var e,a=[];for(e in n)n.hasOwnProperty(e)&&25<=Object.keys(n[e]).length&&a.p(n[e]);return a}function o(t){return t[1].map(function(r){return r>.75*t[0]?1:0})}function f(t,r,n){for(var e=[],a=0,o=t.length/(4*r),f=0;o>f;f++)for(var i=0;r>i;i++){var h=4*(m*f+i),h=.21*t[h]+.72*t[h+1]+.07*t[h+2];e.p(l(255,v(n*h))),a+=h}return a/=m*w,[a,e]}function i(t,r){var n=new Image;n.onload=function(){t=document.createElement("canvas");t.width=n.width,t.height=n.height,t.style.display="none";var e=t.getContext("2d");e.drawImage(n,0,0,n.width,n.height);for(var a=e.getImageData(0,0,t.width,t.height).data,o=n.height/n.width*720,e=e.getImageData(0,0,720,o).data,t=t.width/720,f=Math.ceil(t),i=0;o>i;i++)for(var h=0;720>h;h++){for(var u=4*(h+720*i),c=0,g=0,l=0,p=0,d=0,s=(i+.5)*t,m=v(i*t);(i+1)*t>m;m++)for(w=Math.abs(s-(m+.5))/f,y=(h+.5)*t,w=w*w,b=v(h*t);(h+1)*t>b;b++){var O=Math.abs(y-(b+.5))/f,c=Math.sqrt(w+O*O);c>=-1&&1>=c&&(c=2*c*c*c-3*c*c+1,c>0&&(O=4*(b+m*n.width),l+=c*a[O],p+=c*a[O+1],d+=c*a[O+2],g+=c))}e[u]=l/g,e[u+1]=p/g,e[u+2]=d/g,e[u+3]=255}r(e,720)},n.src=t}function h(t){return t.map(function(t,r){var n=1/0,e=1/0,a=-1/0,o=-1/0;return Object.keys(t).r(function(t){t=t.split(",").map(function(t){return parseInt(t)}),n=l(n,t[0]),e=l(e,t[1]),a=g(a,t[0]),o=g(o,t[1])}),[n,e,a-n,o-e,r]}).q(function(t){return 4<t[2]})}function u(t){for(var r=[];0<t.length;){var n,e=!1;if(0<r.length){var a=r[r.length-1],o=[];t.r(function(t,r){var n=a[1]+a[3]/2,e=t[1]+t[3]/2,n=n>t[1]&&n<t[1]+t[3];(e>a[1]&&e<a[1]+a[3]||n)&&o.p(t.a(r))}),o=o.q(function(t){var r=t[0]+t[2]/2-(a[0]+a[2]/2);return r>0&&r<t[2]+a[2]}).sort(function(t,r){return t[0]+t[2]/2-(r[0]+r[2]/2)}),0<o.length?n=o[0]:e=!0}else e=!0;e&&(n=t.reduce(function(t,r,n){return t[0]+3*t[1]<r[0]+3*r[1]?t:r.a(n)},[1/0,1/0,1/0,1/0,-1])),r.p(t.splice(n[5],1)[0])}return r}function c(t){return"#"!==t.charAt(0)?!1:document.getElementById(t.substring(1))}var v=Math.floor,g=Math.max,l=Math.min,p=Array.prototype;p.p=p.push,p.q=p.filter,p.r=p.forEach,p.a=p.concat;var d,s,m,w,y,b,O,I,M;return{b:function(){d=c("#c"),s=d.getContext("2d"),w=m=0,y=[],b=[],O=[],I=[],M=0,c("#d").addEventListener("change",function(i){w=m=0,y=[],b=[],O=[],I=[],M=0,r(i,function(){var r;r=f(y,m,1),r=o(r),O=a(e(n(n(r))),m),I=u(h(O)),b=f(y,m,1.6),t(150)})})}}}();window.addEventListener("load",O.b);</script>