Mam tylko adres URL do obrazu. Muszę określić wysokość i szerokość tego obrazu, używając tylko JavaScript. Obraz nie może być widoczny dla użytkownika na stronie. Jak mogę uzyskać jego wymiary?
Mam tylko adres URL do obrazu. Muszę określić wysokość i szerokość tego obrazu, używając tylko JavaScript. Obraz nie może być widoczny dla użytkownika na stronie. Jak mogę uzyskać jego wymiary?
Odpowiedzi:
var img = new Image();
img.onload = function(){
var height = img.height;
var width = img.width;
// code here to use the dimensions
}
img.src = url;
onload
przed ustawieniem adresu URL obrazu?
onload
jest odbiornikiem, który będzie wywoływany asynchronicznie, jeśli obraz zostanie poprawnie załadowany. Jeśli ustawisz odbiornik po ustawieniu adresu URL, obraz może zostać załadowany tuż przed tym, jak kod osiągnie ustawienie samego ładowania, co spowoduje, że odbiornik nigdy nie zostanie wywołany. Posługując się analogiami, jeśli podajesz sobie szklankę z wodą, czy najpierw nalewasz wodę, a następnie stawiasz szklankę, aby ją napełnić? A może najpierw stawiasz szklankę, a potem wlewasz wodę?
Zrób nowy Image
var img = new Image();
Ustaw src
img.src = your_src
Pobierz width
iheight
//img.width
//img.height
Używa funkcji i czeka na jej zakończenie.
http://jsfiddle.net/SN2t6/118/
function getMeta(url){
var r = $.Deferred();
$('<img/>').attr('src', url).load(function(){
var s = {w:this.width, h:this.height};
r.resolve(s)
});
return r;
}
getMeta("http://www.google.hr/images/srpr/logo3w.png").done(function(test){
alert(test.w + ' ' + test.h);
});
var img = document.createElement("img");
img.onload = function (event)
{
console.log("natural:", img.naturalWidth, img.naturalHeight);
console.log("width,height:", img.width, img.height);
console.log("offsetW,offsetH:", img.offsetWidth, img.offsetHeight);
}
img.src = "image.jpg";
document.body.appendChild(img);
// css for tests
img { width:50%;height:50%; }
Uzyskaj rozmiar obrazu dzięki jQuery
function getMeta(url){
$("<img/>",{
load : function(){
alert(this.width+' '+this.height);
},
src : url
});
}
Uzyskaj rozmiar obrazu za pomocą JavaScript
function getMeta(url){
var img = new Image();
img.onload = function(){
alert( this.width+' '+ this.height );
};
img.src = url;
}
Uzyskaj rozmiar obrazu za pomocą JavaScript (nowoczesne przeglądarki, IE9 +)
function getMeta(url){
var img = new Image();
img.addEventListener("load", function(){
alert( this.naturalWidth +' '+ this.naturalHeight );
});
img.src = url;
}
Użyj powyższego po prostu jako: getMeta (" http://example.com/img.jpg ");
https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement
Podobne pytanie zadane i udzielone przy użyciu JQuery tutaj:
Uzyskaj wysokość szerokości zdalnego obrazu z adresu URL
function getMeta(url){
$("<img/>").attr("src", url).load(function(){
s = {w:this.width, h:this.height};
alert(s.w+' '+s.h);
});
}
getMeta("http://page.com/img.jpg");
jeśli masz plik obrazu z formularza wejściowego. możesz używać w ten sposób
let images = new Image();
images.onload = () => {
console.log("Image Size", images.width, images.height)
}
images.onerror = () => result(true);
let fileReader = new FileReader();
fileReader.onload = () => images.src = fileReader.result;
fileReader.onerror = () => result(false);
if (fileTarget) {
fileReader.readAsDataURL(fileTarget);
}
Poniższy kod dodaje wysokość i szerokość atrybutu obrazu do każdego obrazu na stronie.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
function addImgAttributes()
{
for( i=0; i < document.images.length; i++)
{
width = document.images[i].width;
height = document.images[i].height;
window.document.images[i].setAttribute("width",width);
window.document.images[i].setAttribute("height",height);
}
}
</script>
</head>
<body onload="addImgAttributes();">
<img src="2_01.jpg"/>
<img src="2_01.jpg"/>
</body>
</html>