feat: load and display image with correct scaling

This commit is contained in:
Orangerot 2024-12-06 19:06:31 +01:00
parent 037f30fe8b
commit 015ff77123
3 changed files with 44 additions and 11 deletions

View file

@ -15,20 +15,20 @@
<div class="hero is-fullheight">
<div class="hero-body">
<div class="container">
<div class="columns is-mobile">
<canvas id="myCanvas" class="is-hidden" width="300" height="300"></canvas>
<div id="imports" class="columns is-mobile">
<div class="column">
<button
class="button is-large is-fullwidth"
style="padding: 100% 0 100% 0">
<button id="take-picture"
class="button is-large is-responsive is-fullwidth">
Take a Picture
</button>
</div>
<div class="column">
<button
class="button is-large is-fullwidth"
style="padding: 100% 0 100% 0">
<label for="upload-image"
class="button is-large is-responsive is-fullwidth">
Upload an Image
</button>
</label>
<input type="file" id="upload-image" accept="image/*" style="display: none">
</div>
</div>
</div><br>

32
main.js
View file

@ -1,6 +1,34 @@
document.addEventListener("DOMContentLoaded", main)
let canvas, imports;
function main() {
// wait for site to be parsed so element can be found
document.addEventListener("DOMContentLoaded", function () {
// bind listeners
document.getElementById("take-picture").addEventListener("click", take_picture);
document.getElementById("upload-image").addEventListener("change", upload_image)
canvas = document.getElementById("myCanvas");
imports = document.getElementById("imports");
})
function take_picture() {
canvas.classList.remove("is-hidden");
imports.classList.add("is-hidden");
}
function upload_image(event) {
canvas.classList.remove("is-hidden");
imports.classList.add("is-hidden");
console.log(this.files[0]);
const img = new Image();
const ctx = canvas.getContext("2d");
img.src = URL.createObjectURL(this.files[0]);
img.onload = function() {
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
}
}

View file

@ -2,3 +2,8 @@ html, body {
margin: 0px;
scroll-behavior: smooth;
}
canvas {
max-width: 100%;
max-height: 100%;
}