Script PHP – Uploader une image et la redimensionner

Vous aimerez aussi...

7 réponses

  1. Thibow dit :

    Tiens, c’est pas mal ce script … mais il y a quelques petites erreurs …

    Je vais peut être le prendre comme base pour un projet, si je le fait évoluer (je vais surement ajouter un backoffice ) je te ferais un post 🙂

    Amicalement.

    • JackPotte dit :

      Effectivement, en baptisant le fichier « test.php », définissant le $content_dir = ‘.’; et en remplaçant les deux points-virgules de concaténation des conditions dans les if ça fonctionne pour moi.

      • cicoub13 dit :

        Corrigé, merci

        • doni1000 dit :

          Bonsoir et merci pour ce script, cependant j’ai un peu modifier le script et je me trouve face à deux problème, si vous avez une solution serai très gentil de votre part

          1. Comment peut améliorer le code pou utiliser le meme formulaire pour uploader plusieurs images sans devoir creer up01-10.php ?

          2. Certaine images uploader sont limités par le getimagesize(tmp_file);

          ex : 2592px x 1728px (ok)
          ex : 5184px x 3456px (ne peux pas etre uploader)

          : ci-dessous le code modifier et en passant merci encore à l’auteur.

          Le premier fichier qui contient le formulaire (upload.php)

          Le deuxième fichier qui traite le upload (up01.php) :

          1000000000)

          {

          exit(« Le fichier n’est pas une image »);

          }

          // on copie le fichier1 dans le dossier de destination

          $name_file1 = $_FILES[‘fichier1’][‘name’];

          if( preg_match(‘#[x00-x1Fx7F-x9F/\\]#’, $name_file1) )

          {

          exit(« Nom de fichier non valide »);

          }

          ////////////////////////////////////////////////

          $taille_min_big = 720;

          $taille_min_small = 280;

          $taille_min_thumb = 44;

          $taille_min_vignette = 120;

          $donnees = getimagesize($tmp_file);

          if(strstr($type_file, ‘jpg’) || strstr($type_file, ‘JPG’) || strstr($type_file, ‘jpeg’)) {

          $image = imagecreatefromjpeg($tmp_file);

          }

          if(strstr($type_file, ‘png’) || strstr($type_file, ‘PNG’)) {

          $image = imagecreatefrompng($tmp_file);

          }

          if(strstr($type_file, ‘gif’) || strstr($type_file, ‘GIF’)) {

          $image = imagecreatefromgif($tmp_file);

          }

          if ($donnees[0] > $donnees[1]) { //paysage

          $largeur_finale_big = round(($taille_min_big/$donnees[1])*$donnees[0]);

          $hauteur_finale_big = $taille_min_big;

          $largeur_finale_small = round(($taille_min_small/$donnees[1])*$donnees[0]);

          $hauteur_finale_small = $taille_min_small;

          $largeur_finale_thumb = round(($taille_min_thumb/$donnees[1])*$donnees[0]);

          $hauteur_finale_thumb = $taille_min_thumb;

          $largeur_finale_vignette = round(($taille_min_vignette/$donnees[1])*$donnees[0]);

          $hauteur_finale_vignette= $taille_min_vignette;

          }

          else

          {//portrait

          $hauteur_finale_big = round(($taille_min_big/$donnees[0])*$donnees[1]);

          $largeur_finale_big = $taille_min_big;

          $hauteur_finale_small = round(($taille_min_small/$donnees[0])*$donnees[1]);

          $largeur_finale_small = $taille_min_small;

          $hauteur_finale_thumb = round(($taille_min_thumb/$donnees[0])*$donnees[1]);

          $largeur_finale_thumb = $taille_min_thumb;

          $hauteur_finale_vignette = round(($taille_min_vignette/$donnees[0])*$donnees[1]);

          $largeur_finale_vignette = $taille_min_vignette;

          }

          $image_big = imagecreatetruecolor($largeur_finale_big, $hauteur_finale_big); //création image finale

          imagecopyresampled($image_big, $image, 0, 0, 0, 0, $largeur_finale_big, $hauteur_finale_big, $donnees[0], $donnees[1]);//copie avec redimensionnement

          imagejpeg ($image_big, $content_dir_big.$name_file1);

          $image_small = imagecreatetruecolor($largeur_finale_small, $hauteur_finale_small); //création image finale

          imagecopyresampled($image_small, $image, 0, 0, 0, 0, $largeur_finale_small, $hauteur_finale_small, $donnees[0], $donnees[1]);//copie avec redimensionnement

          imagejpeg ($image_small, $content_dir_small.$name_file1);

          $image_thumb = imagecreatetruecolor($largeur_finale_thumb, $hauteur_finale_thumb); //création image finale

          imagecopyresampled($image_thumb, $image, 0, 0, 0, 0, $largeur_finale_thumb, $hauteur_finale_thumb, $donnees[0], $donnees[1]);//copie avec redimensionnement

          imagejpeg ($image_thumb, $content_dir_thumb.$name_file1);

          $image_vignette = imagecreatetruecolor($largeur_finale_vignette, $hauteur_finale_vignette); //création image finale

          imagecopyresampled($image_vignette, $image, 0, 0, 0, 0, $largeur_finale_vignette, $hauteur_finale_vignette, $donnees[0], $donnees[1]);//copie avec redimensionnement

          imagejpeg ($image_vignette, $content_dir_vignette.$name_file1);

          }

          ?>

          • cicoub13 dit :

            Il manque un bout de ton deuxième fichier.

            Pour répondre :

            1 – Tu peux mettre le formulaire et le code php dans le même fichier (il faut juste mettre le formulaire en bas et modifier le paramètre action).

            2 – Je pense que cela vient plutôt de la taille (en Mo) de ta photo. Cherche du côté de upload_max_filesize et post_max_size

  2. Rocher dit :

    Merci beaucoup pour ces explications concises et précises !
    Je cherchais un script ressemblant à celui-ci pour mon site http://quelfilm.net pour afficher des miniatures de films pour eviter de charger toutes les images taille « réelles ».

    Ah oui aussi au passage, pourquoi la fonction imagecopyresampled serait de meilleure qualité que imagecopyresized ??

    Encore merci, je reviendrais 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *