Spaces:
Running
Running
| let img = new Image(); | |
| let canvas = document.getElementById("canvas"); | |
| let ctx = canvas.getContext("2d"); | |
| document.getElementById("upload").onchange = e => { | |
| let file = e.target.files[0]; | |
| img.src = URL.createObjectURL(file); | |
| img.onload = () => { | |
| canvas.width = img.width; | |
| canvas.height = img.height; | |
| draw(); | |
| } | |
| }; | |
| function draw() { | |
| ctx.filter = ` | |
| brightness(${document.getElementById("brightness").value}%) | |
| contrast(${document.getElementById("contrast").value}%) | |
| blur(${document.getElementById("blur").value}px) | |
| grayscale(${document.getElementById("gray").value}%) | |
| `; | |
| ctx.drawImage(img, 0, 0, canvas.width, canvas.height); | |
| let sharpenValue = document.getElementById("sharpen").value; | |
| if (sharpenValue > 0) applySharpen(sharpenValue); | |
| } | |
| function applySharpen(amount) { | |
| let imgData = ctx.getImageData(0, 0, canvas.width, canvas.height); | |
| let pixels = imgData.data; | |
| for (let i = 0; i < pixels.length; i+=4) { | |
| pixels[i] = pixels[i] + amount * 10; | |
| pixels[i+1] = pixels[i+1] + amount * 10; | |
| pixels[i+2] = pixels[i+2] + amount * 10; | |
| } | |
| ctx.putImageData(imgData, 0, 0); | |
| } | |
| document.querySelectorAll("input[type=range]").forEach(r => { | |
| r.oninput = draw; | |
| }); | |
| document.getElementById("download").onclick = () => { | |
| let link = document.createElement("a"); | |
| link.download = "edited.png"; | |
| link.href = canvas.toDataURL(); | |
| link.click(); | |
| }; |