83 lines
2.4 KiB
JavaScript
83 lines
2.4 KiB
JavaScript
window.addEventListener("DOMContentLoaded", () => {
|
|
document.getElementById("upload").addEventListener("input", () => {
|
|
if(document.getElementById("upload").files.length > 0) {
|
|
const file = document.getElementById("upload").files[0];
|
|
let image;
|
|
if (file.type.startsWith("image/")) {
|
|
image = URL.createObjectURL(file);
|
|
renderImageOnCanvas(image);
|
|
document.getElementById("filename").innerText = file.name;
|
|
} else {
|
|
alert("Please upload a valid image file.");
|
|
return;
|
|
}
|
|
}
|
|
});
|
|
|
|
document.getElementById("downloadPng").addEventListener("click", () => {
|
|
downloadPictureFromCanvas("image/png");
|
|
});
|
|
|
|
document.getElementById("downloadWebp").addEventListener("click", () => {
|
|
downloadPictureFromCanvas("image/webp");
|
|
});
|
|
|
|
let dragCounter = 0;
|
|
document.addEventListener("drag", () => {
|
|
document.getElementById("dragOverlay").style.display = "";
|
|
});
|
|
document.addEventListener("dragenter", () => {
|
|
dragCounter++;
|
|
document.getElementById("dragOverlay").style.display = "";
|
|
});
|
|
document.addEventListener("dragover", (e) => {
|
|
e.preventDefault();
|
|
document.getElementById("dragOverlay").style.display = "";
|
|
});
|
|
document.addEventListener("dragleave", (e) => {
|
|
dragCounter--;
|
|
if (dragCounter <= 0) {
|
|
document.getElementById("dragOverlay").style.display = "none";
|
|
}
|
|
});
|
|
document.addEventListener("drop", (e) => {
|
|
e.preventDefault();
|
|
document.getElementById("dragOverlay").style.display = "none";
|
|
const files = e.dataTransfer.files;
|
|
if (files.length > 0) {
|
|
const file = files[0];
|
|
let image;
|
|
if (file.type.startsWith("image/")) {
|
|
image = URL.createObjectURL(file);
|
|
renderImageOnCanvas(image);
|
|
document.getElementById("filename").innerText = file.name;
|
|
} else {
|
|
alert("Please upload a valid image file.");
|
|
return;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
function downloadPictureFromCanvas(fileType) {
|
|
const canvas = document.getElementById("cv");
|
|
const link = document.createElement("a");
|
|
const originalFilename = document.getElementById("filename").innerText;
|
|
link.download = originalFilename.replace(/\.[^/.]+$/, "");
|
|
link.href = canvas.toDataURL(fileType);
|
|
link.click();
|
|
}
|
|
|
|
function renderImageOnCanvas(image) {
|
|
const canvas = document.getElementById("cv");
|
|
const ctx = canvas.getContext("2d");
|
|
const img = new Image();
|
|
img.src = image;
|
|
img.onload = () => {
|
|
canvas.width = img.width;
|
|
canvas.height = img.height;
|
|
ctx.drawImage(img, 0, 0);
|
|
};
|
|
}
|
|
|