J'ai une img encodée en base64 que vous pouvez trouver ici . Comment puis-je en connaître la hauteur et la largeur?
J'ai une img encodée en base64 que vous pouvez trouver ici . Comment puis-je en connaître la hauteur et la largeur?
Réponses:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
Pour une utilisation synchrone, enveloppez-le simplement dans une promesse comme celle-ci:
function getImageDimensions(file) {
return new Promise (function (resolved, rejected) {
var i = new Image()
i.onload = function(){
resolved({w: i.width, h: i.height})
};
i.src = file
})
}
alors vous pouvez utiliser await pour obtenir les données dans un style de codage synchrone:
var dimensions = await getImageDimensions(file)
J'ai trouvé cela en utilisant .naturalWidth
et j'ai .naturalHeight
eu les meilleurs résultats.
const img = new Image();
img.src = 'https://via.placeholder.com/350x150';
img.onload = function() {
const imgWidth = img.naturalWidth;
const imgHeight = img.naturalHeight;
console.log('imgWidth: ', imgWidth);
console.log('imgHeight: ', imgHeight);
};
Ceci n'est pris en charge que dans les navigateurs modernes. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
Créez un <img>
fichier masqué avec cette image, puis utilisez jquery .width () et. la taille()
$("body").append("<img id='hiddenImage' src='"+imageData+"' />");
var width = $('#hiddenImage').width();
var height = $('#hiddenImage').height();
$('#hiddenImage').remove();
alert("width:"+width+" height:"+height);
Testez ici: FIDDLE
L'image n'est pas initialement créée cachée. il est créé, puis vous obtenez la largeur et la hauteur, puis vous le supprimez. Cela peut entraîner une visibilité très courte dans les grandes images.Dans ce cas, vous devez envelopper l'image dans un autre conteneur et rendre ce conteneur masqué et non l'image elle-même.
Un autre violon qui n'ajoute pas à dom selon l'anser de gp: ICI