Ho un base64 img encoded
che si può trovare here. Come posso ottenere l'altezza e la larghezza di esso?JS - ottenere la larghezza e l'altezza dell'immagine dal codice base64
risposta
var i = new Image();
i.onload = function(){
alert(i.width+", "+i.height);
};
i.src = imageData;
Creare un <img>
nascosta con quell'immagine e quindi utilizzare 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);
test: FIDDLE
immagine non viene inizialmente creato nascosto. viene creato, quindi si ottiene larghezza e altezza e quindi rimuoverlo. Ciò potrebbe causare una visibilità molto breve nelle immagini di grandi dimensioni in questo caso è necessario avvolgere l'immagine in un altro contenitore e rendere nascosto quel contenitore non l'immagine stessa.
Un'altra Fiddle che non aggiunge a dom secondo gp di Anser:. HERE
ho trovato che utilizzando .naturalWidth e .naturalHeight avuto i migliori risultati.
var img = new Image();
img.onload = function() {
var imgWidth = img.naturalWidth,
imgHeight = img.naturalHeight;
};
Questo è supportato solo nei browser moderni. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
Per uso sincrono Basta avvolgere 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 è possibile utilizzare attendono per ottenere i dati in sincrono stile di codifica:
var dimensions = await getImageDimensions(file)
semplicemente fantastico, ci vuole mezzo tempo per controllare le dimensioni, grazie mille! – bombastic
peccato che si tratti di un processo asincrono. –
@CoenDamen sì. Ho bisogno anche di un processo sincrono. –