Eu tenho um img codificado em base64 que você pode encontrar aqui . Como posso obter a altura e a largura dele?
Eu tenho um img codificado em base64 que você pode encontrar aqui . Como posso obter a altura e a largura dele?
Respostas:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
Para uso síncrono, basta envolvê-lo em uma promessa como esta:
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
})
}
então, você pode usar await para obter os dados no estilo de codificação síncrona:
var dimensions = await getImageDimensions(file)
Achei isso usando .naturalWidth
e .naturalHeight
tive os melhores resultados.
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);
};
Isso só é compatível com navegadores modernos. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
Crie um oculto <img>
com essa imagem e use jquery .width () e. altura()
$("body").append("<img id='hiddenImage' src='"+imageData+"' />");
var width = $('#hiddenImage').width();
var height = $('#hiddenImage').height();
$('#hiddenImage').remove();
alert("width:"+width+" height:"+height);
Teste aqui: FIDDLE
A imagem não é criada inicialmente oculta. ele é criado, então você obtém largura e altura e então o remove. Isso pode causar uma visibilidade muito curta em imagens grandes. Nesse caso, você deve envolver a imagem em outro contêiner e tornar esse contêiner oculto, não a própria imagem.
Outro Fiddle que não adiciona ao dom conforme o anser da gp.: AQUI