Je n'ai qu'une URL vers une image. Je dois déterminer la hauteur et la largeur de cette image en utilisant uniquement JavaScript. L'image ne peut pas être visible par l'utilisateur sur la page. Comment puis-je obtenir ses dimensions?
Je n'ai qu'une URL vers une image. Je dois déterminer la hauteur et la largeur de cette image en utilisant uniquement JavaScript. L'image ne peut pas être visible par l'utilisateur sur la page. Comment puis-je obtenir ses dimensions?
Réponses:
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
avant de définir l'url de l'image?
onload
est un écouteur qui sera appelé de manière asynchrone si l'image est chargée correctement. Si vous définissez l'écouteur après avoir défini l'URL, l'image peut se charger juste avant que le code n'atteigne la configuration du chargement lui-même, ce qui fait que l'écouteur n'est jamais appelé. En utilisant des analogies, si vous vous servez un verre avec de l'eau, versez-vous d'abord l'eau et ensuite mettez-vous le verre pour le remplir? Ou mettez-vous d'abord le verre et ensuite vous versez l'eau?
Faire un nouveau Image
var img = new Image();
Met le src
img.src = your_src
Obtenez le width
et leheight
//img.width
//img.height
Cela utilise la fonction et attend qu'elle se termine.
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%; }
si vous avez un fichier image de votre formulaire d'entrée. tu peux utiliser comme ça
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);
}
Question similaire posée et répondue en utilisant JQuery ici:
Obtenir la hauteur de largeur de l'image distante à partir de l'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");
Obtenir la taille de l'image avec jQuery
function getMeta(url){
$("<img/>",{
load : function(){
alert(this.width+' '+this.height);
},
src : url
});
}
Obtenir la taille de l'image avec JavaScript
function getMeta(url){
var img = new Image();
img.onload = function(){
alert( this.width+' '+ this.height );
};
img.src = url;
}
Obtenir la taille de l'image avec JavaScript (navigateurs modernes, IE9 +)
function getMeta(url){
var img = new Image();
img.addEventListener("load", function(){
alert( this.naturalWidth +' '+ this.naturalHeight );
});
img.src = url;
}
Utilisez simplement ce qui précède comme: getMeta (" http://example.com/img.jpg ");
https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement
Le code suivant ajoute la hauteur et la largeur de l' attribut d'image à chaque image de la page.
<!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>