Подтвердить что ты не робот

JS - получить ширину и высоту изображения из кода base64

У меня есть base64 img encoded, который вы можете найти здесь. Как я могу получить высоту и ширину?

4b9b3361

Ответ 1

var i = new Image(); 

i.onload = function(){
 alert( i.width+", "+i.height );
};

i.src = imageData; 

Ответ 2

Для синхронного использования просто оберните это в обещание как это:

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
  })
}

тогда вы можете использовать await для получения данных в стиле синхронного кодирования:

var dimensions = await getImageDimensions(file)

Ответ 3

Я обнаружил, что наилучшие результаты имели использование .naturalWidth и .naturalHeight.

var img = new Image();

img.onload = function() {
    var imgWidth = img.naturalWidth,
        imgHeight = img.naturalHeight;
};

Это поддерживается только в современных браузерах. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/

Ответ 4

Создайте скрытый <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 в соответствии с gp. anser: ЗДЕСЬ