/
offreg.min.js
1 lines (1 loc) · 2.48 KB
/
offreg.min.js
1
!function(a){a.fn.offreg=function(c,d,e,f){var g=a(this);return new b(g,c,d,e,f),g};var b=function(a,b,c,d,e){this.el=a,this.img=new Image,this.w=0,this.h=0,this.rot=d,this.axis=e?e:d,this.png=c?c:!1,this.bg=a.css("background-color"),this.pixelData=[],this.rgb=[],this.init(b)};b.prototype.init=function(b){var c=this;this.c=document.createElement("canvas"),this.ctx=this.c.getContext("2d"),this.img.src=b,this.img.onload=function(){c.w=a(this)[0].width,c.h=a(this)[0].height,c.c.width=c.w,c.c.height=c.h,c.padding=.9,c.imgw=c.w*c.padding,c.imgh=c.h*c.padding,c.buildLayerData()}},b.prototype.buildLayerData=function(){var a=this.pixelData,b=2*this.rot,c=10*this.axis;.1>b&&(b=.1),.1>c&&(c=.1);for(var d=0;3>d;d++){var e=-b+Math.random()*2*b,f=Math.random()*2*c-c,g=Math.random()*2*c-c;this.ctx.save(),this.ctx.translate(this.w/2,this.h/2),this.ctx.rotate(this.toRad(e)),this.png||(this.ctx.fillStyle=this.bg,this.ctx.fillRect(1.5*-this.imgw,1.5*-this.imgh,3*this.w,3*this.h)),this.ctx.drawImage(this.img,-this.imgw/2,-this.imgh/2,this.imgw,this.imgh),a[d]=this.ctx.getImageData(f,g,this.w,this.h),this.ctx.restore()}this.convertToRGBChannels()},b.prototype.convertToRGBChannels=function(){for(var a=this.rgb,b=0;3>b;b++){a[b]=this.pixelData[b].data;for(var c=a[b],d=0;d<c.length-4;d+=4)switch(b){case 0:c[d]=255-c[d],c[d+1]=0,c[d+2]=0;break;case 1:c[d]=0,c[d+1]=255-c[d+1],c[d+2]=0;break;case 2:c[d]=0,c[d+1]=0,c[d+2]=255-c[d+2]}this.pixelData[b].data=c}this.merge()},b.prototype.merge=function(){var a=this.pixelData[1];this.screenBlend(this.pixelData[0],a),this.screenBlend(this.pixelData[2],a),this.invert(a),this.deploy(a)},b.prototype.deploy=function(a){this.ctx.putImageData(a,0,0),this.png||(this.ctx.strokeStyle=this.bg,this.ctx.lineWidth=25,this.ctx.strokeRect(0,-0,this.w,this.h)),this.el.append(this.convertCanvasToImage(this.c))},b.prototype.screenBlend=function(a,b){for(var c,d,e,f,g,h,i,j,k,l,m=b.data.length,n=0;m>n;n+=4)c=a.data[n+3]/255,d=b.data[n+3]/255,k=c+d-c*d,b.data[n+3]=255*k,e=a.data[n]/255*c,h=b.data[n]/255*d,f=a.data[n+1]/255*c,i=b.data[n+1]/255*d,g=a.data[n+2]/255*c,j=b.data[n+2]/255*d,l=255/k,b.data[n]=(e+h-e*h)*l,b.data[n+1]=(f+i-f*i)*l,b.data[n+2]=(g+j-g*j)*l},b.prototype.invert=function(a){for(var b=0;b<a.data.length-4;b+=4)a.data[b]=255-a.data[b],a.data[b+1]=255-a.data[b+1],a.data[b+2]=255-a.data[b+2]},b.prototype.toRad=function(a){return a/180*Math.PI},b.prototype.convertCanvasToImage=function(a){var b=new Image;return b.src=this.png?a.toDataURL("image/png"):a.toDataURL("image/jpeg"),b}}(jQuery);