Upload de photo sur son site

Bonjour,
J aimerais charger des photos sur mon site mais en les redimensionnant creer une image miniature de taille par exemeple de 50/50px et une plus grande de 300/300px

Les charger sur mon site je sais le fait faire en php

comme ceci

$dossier = 'images/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.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 uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
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);
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}

merci beaucoup de votre aide
Configuration: Vista

11 réponses

  1. tiens j'ai ça pour toi, ça vient du site du zero ça marche nickel mais désolé j'ai pas retrouvé la page en question ^^

    <?php
    $source = imagecreatefromjpeg("couchersoleil.jpg"); // La photo est la source
    $destination = imagecreatetruecolor(200, 150); // On crée la miniature vide

    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);

    // On crée la miniature
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);

    // On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
    imagejpeg($destination, 'mini_couchersoleil.jpg');
    ?>
    <img src="mini_couchersoleil.jpg" alt="Coucher de soleil" />
    0
    1. meri pour ta reponse aussi rapide je vais tester

      mais j ai un petit souci avec le dossier ou ca l enregistre

      quel nom dois je donner au dossier?

      merci pour ton aide
      0
      1. celui que tu veux mais en un mot c'est mieux =)
        0
        1. ok
          donc imagejpeg($destination, 'mini_couchersoleil.jpg');
          avant destionation je met par exemple images
          ce qui donne
          imagejpeg(images/$destination, 'mini_couchersoleil.jpg');
          0
          1. evites "images j'ai cru voir que tu avais dejà un dossier de ce nom, essaye plutot quelque chose comme "PhotosRedim"
            0
            1. ok alors je mai PhotosRedima la place de images

              je vai tester
              0
              1. j'ai essayé tout à l'heure et ça marchait impec, le seul hic est qu'il faut renommer à chaque fois ^^ et ça c'est pas terrible, je suis à moitié en train de chercher comment faire ça de manière plus vaste comme télécharger une centaine de photos direct, mais c'est pas du tout au point parce que je suis sur autre chose en même temps ^^
                ha j'oubliais, si le code ne fonctionne pas, c'est peut être que ton hébergeur à désactiver la fonction (apparemment très gourmandes en ressources).

                voilà espérons que ça marche nickel pour toi =)
                0
                1. non justement ca ne fonctionne pas

                  Je suis chez Ovh

                  Il me donne ca comme erreur
                  Warning: imagecreatefromjpeg(finish.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /homez.232/../www/admin/insert.php on line 39

                  Warning: imagesx(): supplied argument is not a valid Image resource in /homez.232/.../www/admin/insert.php on line 43

                  Warning: imagesy(): supplied argument is not a valid Image resource in /homez.232/.../www/admin/insert.php on line 44

                  Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /homez.232/.../www/admin/insert.php on line 49

                  Warning: imagejpeg(): supplied argument is not a valid Image resource in /homez.232/..../www/admin/insert.php on line 52
                  0
                  1. Perso le code tel que je l'ai testé tout à l'heure avec wamp, marchait impec et quand à l'hebergeur t'es au top là ;)
                    0
                    1. ok je vais regarder ca de plus pres deamon
                      merci pour ton aide a++
                      0
                      1. J ai un peu bidouiller et j ai reussi a ca

                        <?php
                        function rewrite($c)
                        {
                        $c = strtr($c,

                        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

                        'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                        $c = preg_replace('`([^[:alnum:]]+)`', '_', $c);

                        return strtolower($c);
                        }
                        if( !empty($_FILES['photo']) )
                        {
                        $extensionValide = array( 'jpg' , 'jpeg' , 'gif' , 'png' , 'bmp' );
                        $maxSize = 2097152;
                        $dirUpload = './upload/';
                        $nbImg = count($_FILES['photo']['name']);

                        $arrImg = array(); // Sert à stocker les infos que l'on veut garder des images et les messages

                        // Vérification des images et upload si ok
                        for( $i=0; $i<$nbImg; $i++ )
                        {
                        if( !empty($_FILES['photo']['name'][$i]) ) // && is_uploaded_file($_FILES['photo']['name'][$i]) )
                        {
                        // Traitement des erreurs
                        if( !$_FILES['photo']['error'][$i] )
                        $arrImg[$i]['upload'] = true;
                        else
                        {
                        $arrImg[$i]['upload'] = false;
                        if( $_FILES['photo']['error'][$i] == 1 )
                        $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' excède la taille maximale autorisée qui est de ' . floor(2097152/1024) . ' ko';
                        else
                        $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' n\'a pu être transférée sur le serveur';
                        }

                        // Vérification des extensions
                        if( $arrImg[$i]['upload'] && !array($ext = strtolower(pathinfo($_FILES['photo']['name'][$i], PATHINFO_EXTENSION)), $extensionValide) )
                        {
                        $arrImg[$i]['upload'] = false;
                        $arrImg[$i]['message'] = 'L\'extension de l\'image ' . $_FILES['photo']['name'][$i] . ' n\'est pas de type autorisé';
                        }
                        elseif( $arrImg[$i]['upload'] )
                        {
                        $arrImg[$i]['ext'] = $ext;
                        $arrImg[$i]['nom'] = rewrite(substr($_FILES['photo']['name'][$i], 0, -(strlen($ext)+1)));
                        }

                        // Vérification du mime
                        if( $arrImg[$i]['upload'] && !($mime = @getimagesize($_FILES['photo']['tmp_name'][$i])) )
                        {
                        $arrImg[$i]['upload'] = false;
                        $arrImg[$i]['message'] = 'Le fichier ' . $_FILES['photo']['name'][$i] . ' n\'est pas une image';
                        }

                        // Vérification de la taille
                        if( $arrImg[$i]['upload'] && filesize($_FILES['photo']['tmp_name'][$i]) > $maxSize )
                        {
                        $arrImg[$i]['upload'] = false;
                        $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' dépasse ' . floor(2097152/1024) . 'ko';
                        }

                        //
                        // Creation d'un identifiant
                        $taille = 20;
                        $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
                        srand(time());
                        for ($f=0;$f<$taille;$f++)
                        {
                        $id.=substr($lettres,(rand()%(strlen($lettres))),1);
                        }
                        //

                        // Upload si tout est ok
                        if( $arrImg[$i]['upload'] )
                        {
                        $upload = move_uploaded_file($_FILES['photo']['tmp_name'][$i], $dirUpload . uniqid(rand()) . $arrImg[$i]['nom'] . '.' . $arrImg[$i]['ext']);

                        //
                        mysql_connect ('mysd', 'ddd', ddd);
                        mysql_select_db ('gdddddt');

                        mysql_query('INSERT INTO dddd (id, photo, url) VALUES ( "'.$id.'", "'.$_FILES['photo']['name'][$i].'", "'.$dirUpload.uniqid(rand()).$arrImg[$i]['nom'].'.'.$arrImg[$i]['ext'].'")');

                        //

                        if( $upload )
                        $arrImg[$i]['message'] = 'L\'image ' . $_FILES['photo']['name'][$i] . ' a été transférée avec succès';
                        else
                        $arrImg[$i]['message'] = 'Un problème est survenu dans la tentative de transfert de l\'image ' . $_FILES['photo']['name'][$i];
                        }

                        }
                        }

                        // Résultat de l'upload
                        echo "<h2>Résultat du transfert</h2>\n";
                        echo "<ul>\n";
                        if( !empty($arrImg) )
                        {
                        foreach( $arrImg as $k => $arr )
                        echo '<li>' . htmlspecialchars($arrImg[$k]['message']) . "</li>\n";

                        }
                        else
                        echo "<li>Aucune image n'a été envoyée</li>";
                        echo "</ul>\n";
                        }
                        else
                        {
                        ?>
                        <form name="form1" enctype="multipart/form-data" method="post" action="">
                        <input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
                        <label>
                        <input name="photo[]" type="file" id="photo1">
                        </label>
                        <p>
                        <label>
                        <input name="photo[]" type="file" id="photo2">
                        </label>
                        </p>
                        <p>
                        <label>
                        <input name="photo[]" type="file" id="photo3">
                        </label>
                        </p>
                        <p>
                        <label>
                        <input name="photo[]" type="file" id="photo4">
                        </label>
                        </p>
                        <p>
                        <label>
                        <input name="photo[]" type="file" id="photo5">
                        </label>
                        </p>
                        <p>
                        <label>
                        <input name="photo[]" type="file" id="photo6">
                        </label>
                        </p>
                        <p>
                        <label>
                        <input type="submit" name="Submit" value="Envoyer">
                        </label>
                        </p>
                        </form>
                        <?php
                        }
                        ?>
                        </body>
                        </html>

                        J aimerais rajouter plusieurs photos dans une base de donnée ce qui vas mais sont a chaque fois creer dans une nouve ligne

                        J aimerais que dans mon tableau il y a photos 1 puis photos2 ......

                        Quelq un a une idee?

                        merci de votre aide
                        0