Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!doctype HTML>
- <!-- https://jsfiddle.net/fj3xpn5u/ -->
- <html>
- <head>
- <title>Image reader</title>
- <script type="text/javascript">
- var c,f,ctx,i,p,d,s;
- var MAX_SIZE=600;
- window.onload=function()
- {
- f=document.querySelector("input");
- c=document.querySelector("canvas");
- d=document.querySelector("div");
- i=document.querySelector("img");
- s=document.querySelector("span");
- ctx=c.getContext("2d");
- f.onchange=function()
- {
- var ff=f.files[0];
- if(ff)
- {
- var fr=new FileReader();
- fr.onloadend=function(e)
- {
- console.log(e);
- i.src=e.result||e.target.result;
- }
- fr.readAsDataURL(ff);
- }
- };
- i.onload=function()
- {
- var w=i.width;
- var h=i.height;
- if(w>MAX_SIZE || h>MAX_SIZE)
- {
- var factor=1;
- if(w>h)
- {
- factor=MAX_SIZE/w;
- }
- else
- {
- factor=MAX_SIZE/h;
- }
- w=w*factor|0;
- h=h*factor|0;
- }
- c.width=w;
- c.height=h;
- ctx.drawImage(i, 0, 0,w ,h);
- s.innerHTML="Image: width="+i.width+"; height="+i.height+"<br />"+
- "Display:"+w+"; height="+h;
- };
- c.onmousemove=function(e)
- {
- var x=e.offsetX;
- var y=e.offsetY;
- var col=getColor(x,y);
- var color="rgba("+col[0]+","+col[1]+","+col[2]+","+col[3]+")";
- d.style.background=color;
- preview(x,y);
- };
- c.onclick=function(e)
- {
- var x=e.offsetX;
- var y=e.offsetY;
- var col=getColor(x,y);
- if(col[3]===0xFF)
- {
- copy("rgb("+col[0]+","+col[1]+","+col[2]+")")
- }
- else
- {
- copy("rgba("+col[0]+","+col[1]+","+col[2]+","+col[3]+")");
- }
- }
- };
- function getColor(x,y)
- {
- var id=ctx.getImageData(x,y,1,1);
- return [id.data[0],id.data[1],id.data[2],id.data[3]];
- }
- function preview(x,y)
- {
- var c1=document.querySelectorAll("canvas")[0];
- var c2=document.querySelectorAll("canvas")[1];
- var ctx1=c1.getContext("2d");
- var ctx2=c2.getContext("2d");
- var region=ctx.getImageData(x-10, y-10, 21, 21);
- for(var i=0;i<21;i++)
- {
- for(var j=0;j<21;j++)
- {
- var rgba=
- {
- r:region.data[(i*21*4)+(j*4)+0],
- g:region.data[(i*21*4)+(j*4)+1],
- b:region.data[(i*21*4)+(j*4)+2]
- };
- ctx2.fillStyle="rgb("+rgba.r+","+rgba.g+","+rgba.b+")";
- ctx2.fillRect(j*10,i*10,10,10);
- }
- }
- ctx2.strokeStyle="red";
- ctx2.strokeRect(100,100,10,10);
- }
- function copy(text)
- {
- window.prompt("Selected Color:", text);
- }
- </script>
- </head>
- <body>
- <h1>Simple javascript color picker</h1>
- <span>Please select an image</span><br />
- <br />
- <input type="file" accept="image/*"/><br /><br />
- <canvas></canvas>
- <canvas width="210" height="210"></canvas>
- <div style="width:100px;height:100px;border:1px solid #FF0000"></div><br />
- <img style="visibility:hidden" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=" alt="" />
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement