Upload et taille d'images

Résolu
Bonjour,
Pour la partie "petites annonces pour fauchés", je mets en place un formulaire pour afficher les informations de l'annonce.
Une ima est uploadée, je voudrai que sa taille soit "diminé" à 200 px de largeur maxi sans passer par
style="width:200px"

Existe-t-il une commande php pour çà ?
merci d'ance
Dominiqueav

5 réponses

  1. Salam,

    c'est possible en redimensionnant l'image après l'upload. regardes le code sur la page:
    http://www.petitcode.com/php-redimensionner-une-image-53

    Hamza
    1. Merci,
      dans le tuto il faut déclarer la variable :
      $file_src : Le chemin de l'image source (), l'image qui va être redimensionnée .
      j'uploade mes images avec ce code
       
      if 
           (   move_uploaded_file($_FILES['foto'] ['tmp_name'],"annonce/{$_FILES['foto'] ['name']}")  
                                          )
      dans un répertoire d'annonce.
      mon form est le suivant
       <div id="facultatif">     
                        <legend style="color:white;font-size:20px;font-family:Champ;padding:10px;background-color:black;width:150px">Pour illustrer votre annonce</legend>
                         <p>vous pouvez ajouter une photo<br />
                         
                         <label for="legende">légende de votre photo :</label> : <input type="legende" name="legende" id="legende"size="30" tabindex="55" /></input>
                         <input type="hidden" name="MAX_FILE_SIZE" value="10485760" />
                         <label for="foto">Format du fichier (JPG, JPEG, PNG ou GIF<span class="bulle"> | max. 100 Ko) :<span>format d'une photo miniature</span></span></label><br />
                         Sélectionnez votre fichier: <input style="color:#8d4c00" size="30" type="file" name="foto">
                        
                          </div>    

      Comment dois je définir la variable $file_src ?
      merci par avance
      1. Salam,

        désolé, je n'etais pas dispo c'est derniers jours.
        le $file_src c'est ça "annonce/{$_FILES['foto'] ['name']}"
        mais il faut biensur remplacer ce qui est entre {} par ça valeur.

        le redimensionnement doit se faire juste après l'execution de la fonction move_uploaded_file

        Hamza
        1. moi aussi j'ai dû partir en vacances, quelle idée !
          j'en suis à avoir réussi à renommer le fichier uploadé et testé les extensions. pour l'upload, çà devient :
            $randString = md5(time()); //encode the timestamp - returns a 32 chars long string  *
                                          $fileName = ($_FILES['foto']['name']); //the original file name  
                                          $splitName = explode('.', $fileName); //split the file name by the dot  
                                          $fileExt = end($splitName); //get the file extension  
                                          $newFileName  = strtolower($randString.'.'.$fileExt); //join file name and ext...
                                          move_uploaded_file($_FILES['foto'] ['tmp_name'],"annonce/{$newFileName}");  echo "Le fichier vient d\être transféré avec succès";
                                           include ("resizer.php") ;    

          et ensuite dans le resizer.php en include (la source que tu m'as indiquée) :mes variables sont indiquées comme çà
          $file_src = "annonce/{$_FILES['newFileName']}";
                 $file_dest = "annonce/{$_FILES['newFileName']}";
                  $new_width = 250 ;
                  $new_height = 175 ;
                  $proportional = true;

          mais pas de changement de tailles (j'ai testé un jpeg de 386 par 500)
          où c'est y que çà coince?
          merci
        2. Salam,

          1- C'est plutot :

          $file_src= "annonce/{$newFileName}";
          $file_dest="annonce/{$newFileName}";
          


          2- Vérifiez les droits du dossier "annonce" qui doivent être 777
          3- Affichez $file_src pour être sûr que c'est le bon chemin et nom de fichier.
          4- Essayez un $file_dest différent de $file_src et voir ce que ça donne

          Hamza
        3. Bonjour,
          j'ai créé un dossier resize en 777, le dossier annonce est lui aussi en 777
          je sépare les deux $file comme çà :
           
                 $file_src= "annonce/{$newFileName}";
                 $file_dest="resize/{$newFileName}";
                  $new_width = 250 ;
                  $new_height = 175 ;
                  $proportional = true;
                  echo  $file_src;
                  echo $file_dest;

          çà affiche bien les deux noms mais l'enregistrement ne se fait que pour $file_src dans le dossier "annonce avec la taille d'origine
          ma page :
          http://www.sitadom39.fr/ajoutannonce.php
          est ce que je dois changer de méthode d'upload.
          Merci
          Dominique
        4. en attendant mieux je colle un width arbitraire
           <td rowspan="8"><img width="150" src="annonce/'.$ligne->img_nom.'" alt="'.$ligne->legende.'" title="'.$ligne->legende.'"/><br /></td>      

          pour pouvoir démarrer
          merci
      2. essayez avec des chemins absolus, il se peut que le script ne trouve pas les dossiers.
        1. Désolé de ne pavoir précisé, mais le upload du
          $file_src= "annonce/{$newFileName}";

          fonctionne.et le fichier est bien enregistré (dans le dossier et dans la base

          C'est l'image
           $file_dest="resize/{$newFileName}";

          qui n'est pas enregistrée (777 ok pour le dossier resize)
          merci
      3. Téléchargez l'exemple ci-dessous :
        http://www.petitcode.com/up/codes/53-php-resize-image-exemple.rar

        ça montre comment on appel la fonction.
        1. Super et merci,
          Bonne semaine
          Dominique