Spaces:
Running
Running
File size: 1,407 Bytes
d6dc5c4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
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();
}; |