Mam zakodowany w base64 img, który możesz znaleźć tutaj . Jak mogę uzyskać jego wysokość i szerokość?
Mam zakodowany w base64 img, który możesz znaleźć tutaj . Jak mogę uzyskać jego wysokość i szerokość?
Odpowiedzi:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
W przypadku użycia synchronicznego po prostu zawiń go w taką obietnicę:
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
})
}
następnie możesz użyć await, aby uzyskać dane w synchronicznym stylu kodowania:
var dimensions = await getImageDimensions(file)
Odkryłem, że używając .naturalWidth
i .naturalHeight
miałem najlepsze wyniki.
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);
};
Dokumenty:
Jest to obsługiwane tylko w nowoczesnych przeglądarkach. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
Utwórz ukryty <img>
obraz z tym obrazem, a następnie użyj jquery .width () i. wysokość()
$("body").append("<img id='hiddenImage' src='"+imageData+"' />");
var width = $('#hiddenImage').width();
var height = $('#hiddenImage').height();
$('#hiddenImage').remove();
alert("width:"+width+" height:"+height);
Przetestuj tutaj: FIDDLE
Obraz nie jest początkowo tworzony jako ukryty. zostanie utworzony, a następnie uzyskasz szerokość i wysokość, a następnie ją usuniesz. Może to spowodować bardzo krótką widoczność w dużych obrazach, w tym przypadku musisz umieścić obraz w innym pojemniku i ukryć ten pojemnik, a nie sam obraz.
Kolejny Fiddle, który nie dodaje do domeny dom według odpowiedzi gp .: TUTAJ