У меня есть img в кодировке base64, который вы можете найти здесь . Как я могу узнать его высоту и ширину?
У меня есть img в кодировке base64, который вы можете найти здесь . Как я могу узнать его высоту и ширину?
Ответы:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
Для синхронного использования просто оберните его в обещание, подобное этому:
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
})
}
тогда вы можете использовать ожидание для получения данных в стиле синхронного кодирования:
var dimensions = await getImageDimensions(file)
Я нашел это, используя .naturalWidth
и .naturalHeight
получил наилучшие результаты.
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);
};
Документы:
Это поддерживается только в современных браузерах. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
Создайте скрытый <img>
с этим изображением, а затем используйте jquery .width () и. высота()
$("body").append("<img id='hiddenImage' src='"+imageData+"' />");
var width = $('#hiddenImage').width();
var height = $('#hiddenImage').height();
$('#hiddenImage').remove();
alert("width:"+width+" height:"+height);
Протестируйте здесь: FIDDLE
Изображение изначально не создается скрытым. он создается, затем вы получаете ширину и высоту, а затем удаляете его. Это может привести к очень короткой видимости в больших изображениях, в этом случае вам нужно обернуть изображение в другой контейнер и сделать этот контейнер скрытым, а не само изображение.
Еще одна скрипка, которая не добавляет к dom в соответствии с anser gp.: ЗДЕСЬ