Taille des images [Résolu]

Signaler
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
-
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
-
bonjour,

En fait j'ai un problème avec des images en javascript.
J'ai besoin de connaître la taille (en pixels) des images que je charge.
Je fais:
my_img.src = ;
et le problème c'est que mes images n'ont pas toutes la même taille et peu
importe l'image, quand je fait my_img.width, j'ai toujours le même résultat
(ici 2560px alors que certaines sont à 1920) observé avec alert().
Si quelqu'un pouvait m'aider parce que là j'ai retourné le web et j'ai pas trouvé
(ou alors je suis vraiment nul en recherche...)
Merci d'avance

3 réponses

Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
1
En fait c'est bon j'ai réussi a trouver le problème!
A cause de la boucle mon clearInterval n'avait pas le temps de se faire
parce que le setInterval était relancé avant. Donc il ne pouvait jamais s'arrêter.
J'ai enlever ma boucle et je rapelle la fonction loadImage dans checkloaded.
ca marche très bien.
Encore merci pour ton aide "ralecul"!
Messages postés
111
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
1 août 2008

Bonjour,

Ce problème est très classique !
Il vient du fait que lorsque l'on fait :

my_img.src =
alert(my_image.width);

L'image n'est pas encore chargée au niveau du alert.
Il faut donc attendre que l'image soit chargée (my_img.complete = true)

Voici un exemple simple de solution pour "attendre" le chargement de l'image :

var my_img;
var waiting;

function loadImage(url)
{
    my_img.src = url;
    //lance checkLoaded toutes les 100ms
    waiting = setInterval(function(){ checkLoaded(); }, 100);
}

function checkLoaded()
{
    if (my_img.complete)
    {
       //stoppe l'éxécution répétée de checkLoaded
       clearInterval(waiting);
      
       alert(my_img.width);
    }
}

Je n'ai pas testé ce bout de code mais ça devrait marcher ...

@+
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
1
Merci, effectivement le problème venait de là.
Seulement cela marche pour une seule image et le problème c'est que je veux charger 4 images
par le biais d'un boucle for,je fais donc :
for (i = 1; i <=4; i++)
      {
          loadImage(); //l'url contient le i
      }
Et en fait la message box alert(my_img.width); se répète indéfiniement...
Y a-t-il une solution ou faut-il que j'abandonne ma boucle ?
Merci d'avance