Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème script de redimensionnement d'image

Sujet résolu
    22 août 2011 à 19:28:52

    Bonjour à toutes et à tous.

    Voilà j'ai un problème avec mon script de redimensionnement d'image que voici :
    function imageResizer(url, largeurMax, hauteurMax)
    {
      var maxWidth = largeurMax;
      var maxHeight = hauteurMax;
      // Declarations des variables "Nouvelle Taille"
      var dW = 0;
      var dH = 0;
      // Declaration d'un objet Image
      var oImg = new Image();
      // Affectation du chemin de l'image a l'objet
      oImg.src = url;
      // On recupere les tailles reelles
      dH = oImg.height;
      dW = oImg.width;
      var h = oImg.height;
      var w = oImg.width;
      // Si la largeur ou la hauteur depasse la taille maximale
      if ((h >= maxHeight) || (w >= maxWidth)) {
        // Si la largeur et la hauteur depasse la taille maximale
        if ((h >= maxHeight) && (w >= maxWidth)) {
          // On cherche la plus grande valeur
          if (h > w) {
            dH = maxHeight;
            // On recalcule la taille proportionnellement
            dW = parseInt((w * dH) / h, 10);
          } else {
            dW = maxWidth;
            // On recalcule la taille proportionnellement
            dH = parseInt((h * dW) / w, 10);
          }
        } else if ((h > maxHeight) && (w < maxWidth)) {
          // Si la hauteur depasse la taille maximale
          dH = maxHeight;
            // On recalcule la taille proportionnellement
          dW = parseInt((w * dH) / h, 10);
        } else if ((h < maxHeight) && (w > maxWidth)) {
          // Si la largeur depasse la taille maximale
          dW = maxWidth;
            // On recalcule la taille proportionnellement
          dH = parseInt((h * dW) / w, 10);
        }
      }else{
          if(h >= w){
              dH=maxHeight;
              dW=parseInt((w*maxHeight)/h,10);          
          }else{
              dW=maxWidth;
              dH=parseInt((h*maxWidth)/w,10);    
          }
      }
      // On ecrit l'image dans le document
      return('<img src="'+url+'" border="none" width="'+dW+'" height="'+dH+'"/>');
    };
    



    Le code de cette fonction est trivial, même pour moi qui suit un très grand novice.

    Voici le cript appelant :
    <script language="javascript">
    document.write(imageResizer("user_data/ventes/2_1314033556.jpg", 400, 400));
    </script>
    


    Et voici le résultat dans firebug :

    <script language="javascript">
    document.write(imageResizer("user_data/ventes/2_1314033556.jpg", 400, 400));
    </script>
    <img width="NaN" height="400" border="none" src="user_data/ventes/2_1314033556.jpg">
    <br>
    <a target="about:blank" href="user_data/ventes/2_1314033556.jpg">Cliquez-ici pour agrandir</a>
    


    Vous voyez très nettement ue dans les dimensions de l'image, il n'y a que des valeurs improbables et surtout un "NaN" sorti de nulle part.

    Voici donc ma colle qui me bloque depuis un paquet d'heures. Si quelqu'un de sympa pouvait m'aider !!

    Petite note : au rechargement de la page, le problème disparait systématiquement, et parfois il n'apparait pas. Je travaille sous firefox 6 et wampserver 2.1
    • Partager sur Facebook
    • Partager sur Twitter
      22 août 2011 à 19:42:14

      oui car tu lance le script avant que l'image ne soit chargée...

      un ptit onload fera l'affaire

      PS : regarde ligne 13...
      • Partager sur Facebook
      • Partager sur Twitter
        22 août 2011 à 19:58:43

        Ok merci, j'ai compris comment faire.
        Au lieu de faire un retour, je dois faire un onload="rezise(this,400,400)" style="display:none;"

        et dans ma fonction je modifie directement d'image. Je vais essayer ca !

        Edit : ca va déjà beaucoup mieux ! Cependant, maintenant mon script refuse de modifier les valeurs et me mets 400 et 400 quoi qu'il arrive

        Nouvelle fonction :
        function imageResizer(img, largeurMax, hauteurMax)
        {
          var maxWidth = largeurMax;
          var maxHeight = hauteurMax;
          // Declarations des variables "Nouvelle Taille"
          var dW = img.width;
          var dH = img.height;
          // On recupere les tailles reelles
          var h = img.height;
          var w = img.width;
          // Si la largeur ou la hauteur depasse la taille maximale
          if ((h >= maxHeight) || (w >= maxWidth)) {
            // Si la largeur et la hauteur depasse la taille maximale
            if ((h >= maxHeight) && (w >= maxWidth)) {
              // On cherche la plus grande valeur
              if (h > w) {
                dH = maxHeight;
                // On recalcule la taille proportionnellement
                dW = parseInt((w * dH) / h, 10);
              } else {
                dW = maxWidth;
                // On recalcule la taille proportionnellement
                dH = parseInt((h * dW) / w, 10);
              }
            } else if ((h > maxHeight) && (w < maxWidth)) {
              // Si la hauteur depasse la taille maximale
              dH = maxHeight;
                // On recalcule la taille proportionnellement
              dW = parseInt((w * dH) / h, 10);
            } else if ((h < maxHeight) && (w > maxWidth)) {
              // Si la largeur depasse la taille maximale
              dW = maxWidth;
                // On recalcule la taille proportionnellement
              dH = parseInt((h * dW) / w, 10);
            }
          }else{
              if(h >= w){
                  dH=maxHeight;
                  dW=parseInt((w*maxHeight)/h,10);          
              }else{
                  dW=maxWidth;
                  dH=parseInt((h*maxWidth)/w,10);    
              }
          }
          // On ecrit l'image dans le document
          img.height=dH;
          img.width=dW;
          img.style.display="";
        };
        


        Code image :
        <img src="user_data/ventes/<?php echo $tab['screen'];?>" onload="imageResizer(this, 400, 400)" width="1px" height="1px"/><br/>
        


        Qui devient :
        <img width="400" height="400" onload="imageResizer(this, 400, 400)" src="user_data/ventes/2_1313984748.png">
        

        Ok résolu !

        Pour ceux qui auront le problème :

        img.height=dH;
          img.width=dW;
          img.style.display="inline";
        


        <img src="user_data/ventes/<?php echo $tab['screen'];?>" onload="imageResizer(this, 400, 400)" style="display:none"/><br/>
        
        • Partager sur Facebook
        • Partager sur Twitter

        Problème script de redimensionnement d'image

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown