convy/src/script.js

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);
};
}