HTML la Toile: mise à l'Échelle l'image pour l'ajuster sans étirement?

Im en utilisant le code ci-dessous pour dessiner et dimensionner une image à l'intérieur d'une toile. Le problème étant que l'image rendue est à l'intérieur d'un étirement.

Si possible, j'aimerais qu'il soit dimensionné en fonction de la largeur, mais de maintenir son ratio d'aspect.

Des idées?

//IMAGE LOADER
var canvas = document.getElementById('image-canvas');
var canvas2 = document.getElementById('image-canvas2');
ctx = canvas.getContext('2d');
ctx2 = canvas2.getContext('2d');

//Trigger the imageLoader function when a file has been selected
var fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', imageLoader, false);

function imageLoader() {
    var reader = new FileReader();
    reader.onload = function(event) {
        img = new Image();
        img.onload = function(){
            ctx.drawImage(img,0,0,canvas.width, canvas.height);
            ctx2.drawImage(img,0,0,canvas.width, canvas.height);
        }
        img.src = reader.result;
    }
    reader.readAsDataURL(fileInput.files[0]);
}
  • Savez-vous que le ratio correct? Vous pouvez simplement appliquer le droit de ratio lors de l'élaboration. Si vous ne le connaissez pas, vous pouvez vous rendre sur le DOM et la requête de l'image en largeur/hauteur