initial commit
This commit is contained in:
commit
68d9e4682e
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Convy</title>
|
||||
<script src="script.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<div id="dragOverlay" style="display: none;">
|
||||
Drop file to convert
|
||||
</div>
|
||||
<input type="file" id="upload"><br>
|
||||
Or drag & drop
|
||||
<canvas id="cv" style=""></canvas>
|
||||
<div id="downloadButtons">
|
||||
<button id="downloadPng">png</button>
|
||||
<button id="downloadWebp">webp</button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,78 @@
|
|||
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);
|
||||
} else {
|
||||
alert("Please upload a valid image file.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("downloadPng").addEventListener("click", () => {
|
||||
const canvas = document.getElementById("cv");
|
||||
const link = document.createElement("a");
|
||||
link.download = "canvas.png";
|
||||
link.href = canvas.toDataURL();
|
||||
link.click();
|
||||
});
|
||||
|
||||
document.getElementById("downloadWebp").addEventListener("click", () => {
|
||||
const canvas = document.getElementById("cv");
|
||||
const link = document.createElement("a");
|
||||
link.download = "canvas.webp";
|
||||
link.href = canvas.toDataURL("image/webp");
|
||||
link.click();
|
||||
});
|
||||
|
||||
document.addEventListener("drag", () => {
|
||||
document.getElementById("dragOverlay").style.display = "";
|
||||
});
|
||||
document.addEventListener("dragenter", () => {
|
||||
document.getElementById("dragOverlay").style.display = "";
|
||||
});
|
||||
document.addEventListener("dragover", (e) => {
|
||||
e.preventDefault();
|
||||
document.getElementById("dragOverlay").style.display = "";
|
||||
});
|
||||
document.addEventListener("dragend", (e) => {
|
||||
e.preventDefault();
|
||||
document.getElementById("dragOverlay").style.display = "none";
|
||||
});
|
||||
document.addEventListener("dragleave", () => {
|
||||
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);
|
||||
} else {
|
||||
alert("Please upload a valid image file.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
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);
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue