IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Création de miniature après upload


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut Création de miniature après upload
    Bonsoir ,

    J'ai un script qui me permet d'uploader 2 photos en meme temps. Jusqu'ici , pas de problème ...
    Ensuite , je souhaite créer une miniature de la première photo , qui devra porter le meme nom qui devra se "nicher " dans le dossier "..images/mini/"
    Je ne parviens pas pas à générer la miniature .
    Un coup de main serait le bienvenu .
    Voici mon code ( issu de script que j'ai tenté d'adapter ...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    <form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data"> <fieldset> <legend>Transf&eacute;rez vos photos </legend>
         <p>
           <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
           S&eacute;lectionnez votre photo de l'avers :
           <input type="file" name="avatar">
         </p>
         <p> S&eacute;lectionnez votre photo du revers <span class="Style2">.</span>: 
           <input type="file" name="av">
          </p>
         <p>
           <input type="submit" name="ok" id="ok" value="Téléchargez les 2 photos " /> 
            </p>
    </fieldset> 
    </form> 
     
          <span class="Style7">
          <?php if (isset($_FILES['avatar']['name'])) {
    // traitement
    $dossier = 'images/avers/';
    $fichier = basename($_FILES['avatar']['name']);
    $taille_maxi = 2000000;
    $taille = filesize($_FILES['avatar']['tmp_name']);
    $extensions = array('.jpg', '.jpeg');
    $extension = strrchr($_FILES['avatar']['name'], '.'); 
     
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez télécharger un fichier de type  jpg ...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    	 $time = date("YmdHis");
    	 $S = substr(md5($fichier.$time),0,15);
    	 $Nom = $S.".jpg";
         if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $Nom)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Téléchargement effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec du téléchargement !';
         }
    }
    else
    {
         echo $erreur;
    }
    }
     
     
    ?>
          </span>
    <?php if (isset($_FILES['av']['name'])) {
    // traitement
    $dossier = 'images/avers/';
    $fichier = basename($_FILES['av']['name']);
    $taille_maxi = 2000000;
    $taille = filesize($_FILES['av']['tmp_name']);
    $extensions = array('.jpg', '.jpeg');
    $extension = strrchr($_FILES['av']['name'], '.'); 
     
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez télécharger un fichier de type  jpg ...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    	 $time = date("YmdHis");
    	 $T = substr(md5($fichier.$time),0,15);
    	 $Nom = $T.".jpg";
         if(move_uploaded_file($_FILES['av']['tmp_name'], $dossier . $Nom)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo '';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec du téléchargement !';
         }
    }
    else
    {
         echo $erreur;
    }
    }
    // on défini le répertoire où seront stockées les miniatures  
    $mini = '../images/mini';  
    // on défini une variable $ratio qui vaudra 100 dans notre cas (100 pixels). En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).  
    $ratio = 100;  
     
    // on teste si le formulaire permettant d'uploader un fichier a été soumis  
    if (isset($_POST['ok'])) { 
       // on teste si le champ permettant de soumettre un fichier est vide ou non 
       if (empty($_FILES['avatar']['tmp_name'])) { 
          // si oui, on affiche un petit message d'erreur 
       } 
       else { 
          // on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier (je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations) 
          $tableau = @getimagesize($_FILES['avatar']['tmp_name']); 
          if ($tableau == FALSE) { 
             // si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur 
             unlink($_FILES['avatar']['tmp_name']); 
             $erreur = 'Votre fichier n\'est pas une image.'; 
          } 
          else { 
             // on teste le type de notre image : jpeg ou png 
             if ($tableau[2] == 2 || $tableau[2] == 3) { 
                // si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload 
                if (is_file('../images/avers/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['avatar']['name']; 
                else $file_upload = $_FILES['avatar']['name']; 
     
                // on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille 
                copy ($_FILES['avatar']['tmp_name'], $dossier.$file_upload); 
     
                // il nous reste maintenant à générer la miniature 
     
                // si notre image est de type jpeg 
                if ($tableau[2] == 2) { 
                   // on crée une image à partir de notre grande image à l'aide de la librairie GD 
                   $src = imagecreatefromjpeg($dossier.$file_upload); 
                   // on teste si notre image est de type paysage ou portrait 
                   if ($tableau[0] > $tableau[1]) { 
                      $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
                      imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
                   } 
                   else { 
                      $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
                      imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
                   } 
                   // on copie notre fichier généré dans le répertoire des miniatures 
                   imagejpeg ($im, $mini.'/'.$file_upload); 
                } 
                elseif ($tableau[2] == 3) { 
                   $src = imagecreatefrompng($dossier.$file_upload); 
                   if ($tableau[0] > $tableau[1]) { 
                      $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
                      imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
                   } 
                   else { 
                      $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
                      imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
                   } 
                   imagepng ($im, $mini.'/'.$file_upload); 
             } 
             else { 
                // si notre image n'est pas de type jpeg ou png, on supprime le fichier uploadé et on affiche un petit message d'erreur 
                unlink($_FILES['avatar']['tmp_name']); 
                $erreur = 'Votre image est d\'un format non supporté.'; 
             } 
          } 
       }  
    }  
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est gentil de tout nous mettre mais qu'obtiens-tu avec ce script ?
    As-tu deja debugué un peu tout ca ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. création de miniatures
    Par cyrill.gremaud dans le forum Langage
    Réponses: 4
    Dernier message: 17/06/2006, 11h19
  2. [Image] Création de miniature
    Par Crazynoss dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 12/05/2006, 04h08
  3. [Upload] Fichier interdit d'accès après upload
    Par Bisûnûrs dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2006, 00h33
  4. [VB.NET] Création de control après ouverture du form
    Par boulete dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/03/2006, 12h06
  5. [Upload] Insertion image dans mysql après upload
    Par alexmorel dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 23h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo