Ich habe nur eine URL zu einem Bild. Ich muss die Höhe und Breite dieses Bildes nur mit JavaScript bestimmen. Das Bild kann für den Benutzer auf der Seite nicht sichtbar sein. Wie kann ich seine Abmessungen erhalten?
Ich habe nur eine URL zu einem Bild. Ich muss die Höhe und Breite dieses Bildes nur mit JavaScript bestimmen. Das Bild kann für den Benutzer auf der Seite nicht sichtbar sein. Wie kann ich seine Abmessungen erhalten?
Antworten:
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
vorher als die URL des Bildes zu setzen?
onload
ist ein Listener, der asynchron aufgerufen wird, wenn das Bild korrekt geladen wird. Wenn Sie den Listener nach dem Festlegen der URL festlegen, wird das Bild möglicherweise geladen, kurz bevor der Code die Einstellung des Onloads selbst erreicht, sodass der Listener nie aufgerufen wird. Wenn Sie sich nach Analogien ein Glas mit Wasser servieren, gießen Sie zuerst das Wasser ein und setzen dann das Glas ein, um es zu füllen? Oder setzen Sie zuerst das Glas ein und gießen dann das Wasser hinein?
Mach ein neues Image
var img = new Image();
Stellen Sie die src
img.src = your_src
Holen Sie sich das width
und dasheight
//img.width
//img.height
Dies nutzt die Funktion und wartet, bis sie abgeschlossen ist.
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);
});
naturalWidth und naturalHeight
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%; }
wenn Sie eine Bilddatei aus Ihrem Eingabeformular haben. Sie können so verwenden
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);
}
Ähnliche Fragen, die mit JQuery hier gestellt und beantwortet wurden:
Holen Sie sich die Breite Höhe des Remote-Bildes von der 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");
Holen Sie sich die Bildgröße mit jQuery
function getMeta(url){
$("<img/>",{
load : function(){
alert(this.width+' '+this.height);
},
src : url
});
}
Holen Sie sich die Bildgröße mit JavaScript
function getMeta(url){
var img = new Image();
img.onload = function(){
alert( this.width+' '+ this.height );
};
img.src = url;
}
Holen Sie sich die Bildgröße mit JavaScript (moderne Browser, IE9 +)
function getMeta(url){
var img = new Image();
img.addEventListener("load", function(){
alert( this.naturalWidth +' '+ this.naturalHeight );
});
img.src = url;
}
Verwenden Sie das Obige einfach als: getMeta (" http://example.com/img.jpg ");
https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement
Mit dem folgenden Code fügen Sie jedem Bild auf der Seite die Höhe und Breite des Bildattributs hinzu.
<!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>