Ho solo un URL per un'immagine. Devo determinare l'altezza e la larghezza di questa immagine utilizzando solo JavaScript. L'immagine non può essere visibile all'utente sulla pagina. Come posso ottenere le sue dimensioni?
Ho solo un URL per un'immagine. Devo determinare l'altezza e la larghezza di questa immagine utilizzando solo JavaScript. L'immagine non può essere visibile all'utente sulla pagina. Come posso ottenere le sue dimensioni?
Risposte:
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
prima di impostare l'URL dell'immagine?
onload
è un listener che verrà chiamato in modo asincrono se l'immagine viene caricata correttamente. Se si imposta il listener dopo aver impostato l'URL, l'immagine potrebbe caricarsi appena prima che il codice raggiunga l'impostazione dell'onload stesso, con il risultato che il listener non viene mai chiamato. Usando analogie, se ti stai servendo un bicchiere con acqua, prima versi l'acqua e poi metti il bicchiere per riempirlo? Oppure metti prima il bicchiere e poi versi l'acqua?
Creane uno nuovo Image
var img = new Image();
Impostare il src
img.src = your_src
Ottieni il width
e ilheight
//img.width
//img.height
Questo utilizza la funzione e attende che venga completata.
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%; }
se hai un file immagine dal modulo di input. puoi usare in questo modo
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);
}
Domanda simile posta e risposta utilizzando JQuery qui:
Ottieni l'altezza della larghezza dell'immagine remota dall'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");
Ottieni la dimensione dell'immagine con jQuery
function getMeta(url){
$("<img/>",{
load : function(){
alert(this.width+' '+this.height);
},
src : url
});
}
Ottieni la dimensione dell'immagine con JavaScript
function getMeta(url){
var img = new Image();
img.onload = function(){
alert( this.width+' '+ this.height );
};
img.src = url;
}
Ottieni le dimensioni dell'immagine con JavaScript (browser moderni, IE9 +)
function getMeta(url){
var img = new Image();
img.addEventListener("load", function(){
alert( this.naturalWidth +' '+ this.naturalHeight );
});
img.src = url;
}
Usa quanto sopra semplicemente come: getMeta (" http://example.com/img.jpg ");
https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement
Il codice seguente aggiunge l' altezza e la larghezza dell'attributo dell'immagine a ciascuna immagine sulla pagina.
<!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>