12Me21

It's alive 2

Jul 18th, 2016
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //image thing
  2. var pasteimagehere=document.createElement("div");
  3. pasteimagehere.style.width="3.25rem";
  4. pasteimagehere.id="pasteimagehere";
  5. pasteimagehere.setAttribute("contenteditable","");
  6. document.querySelector("#sendpane").appendChild(pasteimagehere);
  7.  
  8. //get image from input
  9. function checkInput(){
  10.     var thing=document.getElementById("pasteimagehere").childNodes[0];
  11.     if (thing){
  12.         if (thing.tagName=="IMG") {
  13.             var pastedImage=new Image();
  14.             pastedImage.crossOrigin="Anonymous";
  15.             pastedImage.onload=function(){
  16.                 putimage(pastedImage);
  17.             };
  18.             pastedImage.src=thing.src;
  19.         }
  20.     }
  21.     document.getElementById("pasteimagehere").innerHTML="";
  22. }
  23.  
  24. var imgInt=setInterval(function(){checkInput();},1000);//THE ONLY SOLUTION
  25.  
  26. function putimage(img){
  27.     var palette=[];
  28.     for(var i=0;i<4;i++)
  29.         palette.push(fillStyleToRgb(document.querySelectorAll("#chatdraw button-area button.colorChange")[i].style.color));
  30.     var canvas=document.querySelector("#chatdraw canvas");
  31.     var c=canvas.getContext("2d");
  32.     var scale=Math.min(canvas.width/img.width,canvas.height/img.height);
  33.     c.drawImage(img,0,0,img.width,img.height,0,0,img.width*scale,img.height*scale);
  34.     var data=c.getImageData(0,0,canvas.width,canvas.height);
  35.     for(var x=0;x<data.data.length;x+=4){
  36.         //get closeset color
  37.         var low=null;
  38.         var lowindex=null;
  39.         for(var i=0;i<palette.length;i++){
  40.             var ur=data.data[x]+palette[i][0];
  41.             var cr=-data.data[x]+palette[i][0];
  42.             var cg=-data.data[x+1]+palette[i][1];
  43.             var cb=-data.data[x+2]+palette[i][2];
  44.             var a=(2+ur/512)*cr*cr+4*cg*cg+(2+(510-ur)/512)*cb*cb;
  45.             if(low===null||a<low){low=a;lowindex=i;}
  46.         }
  47.         //dithering
  48.         var errr=(data.data[x  ]-palette[lowindex][0]);
  49.         var errg=(data.data[x+1]-palette[lowindex][1]);
  50.         var errb=(data.data[x+2]-palette[lowindex][2]);
  51.         addRGB(x+4  ,5/16);
  52.         addRGB(x+796,2/16);
  53.         addRGB(x+800,5/16);
  54.         addRGB(x+804,3/16);
  55.         data.data[x  ]=palette[lowindex][0];
  56.         data.data[x+1]=palette[lowindex][1];
  57.         data.data[x+2]=palette[lowindex][2];
  58.  
  59.     }
  60.     c.putImageData(data,0,0);
  61.    
  62.     function addRGB(index,amount) {
  63.         if (index<data.data.length) {
  64.             data.data[index  ]+=errr*amount;
  65.             data.data[index+1]+=errg*amount;
  66.             data.data[index+2]+=errb*amount;
  67.         }
  68.     }
  69.  
  70.     function getButtonColors() {
  71.         var colors = [];
  72.         for(var i = 0; i < 4; i++)
  73.             colors.push(fillStyleToRgb(document.querySelectorAll("#chatdraw button-area button.colorChange")[i].style.color));
  74.         return colors;
  75.     }
  76. }
  77.  
  78. var filebrowse=document.createElement("input");
  79. filebrowse.type="file";
  80. filebrowse.id="imageupload";
  81. filebrowse.onchange=function(){loadimg();};
  82. document.querySelector("#sidepane").appendChild(filebrowse);
  83.  
  84. function loadimg(){
  85.     var reader=new FileReader();
  86.     var z=new Image();
  87.     reader.readAsDataURL(document.getElementById("imageupload").files[0]);
  88.     reader.onload=function(){
  89.         z.onload=function(){
  90.             putimage(z);
  91.         };
  92.         z.src=reader.result;
  93.     };
  94. }
Add Comment
Please, Sign In to add comment