Taille des images

Résolu
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 11 oct. 2007 à 16:54
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 12 oct. 2007 à 17:33
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

bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
12 oct. 2007 à 17:33
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"!
3
ralecul Messages postés 111 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 1 août 2008
11 oct. 2007 à 17:43
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 ...

@+
0
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
12 oct. 2007 à 11:14
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
0
Rejoignez-nous