Ho un img base64 codificato che puoi trovare qui . Come posso ottenerne l'altezza e la larghezza?
Risposte:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
Per un uso sincrono, racchiudilo in una promessa come questa:
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
})
}
quindi puoi usare await per ottenere i dati in stile di codifica sincrono:
var dimensions = await getImageDimensions(file)
L'ho scoperto usando .naturalWidth
e ho .naturalHeight
avuto i migliori risultati.
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);
};
Questo è supportato solo nei browser moderni. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
Crea un nascosto <img>
con quell'immagine e poi usa jquery .width () e. altezza()
$("body").append("<img id='hiddenImage' src='"+imageData+"' />");
var width = $('#hiddenImage').width();
var height = $('#hiddenImage').height();
$('#hiddenImage').remove();
alert("width:"+width+" height:"+height);
Prova qui: FIDDLE
L'immagine non viene inizialmente creata nascosta. viene creato, quindi ottieni larghezza e altezza e quindi lo rimuovi. Ciò può causare una visibilità molto breve nelle immagini di grandi dimensioni, in questo caso devi avvolgere l'immagine in un altro contenitore e rendere quel contenitore nascosto e non l'immagine stessa.
Un altro violino che non si aggiunge al dom come da risposta di gp.: QUI