У мене є закодований 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
})
}
тоді ви можете використовувати await для отримання даних у стилі синхронного кодування:
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.: ТУТ