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

PHP & Base de données Discussion :

upload d'image et redimmensionnement


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut upload d'image et redimmensionnement
    bonjour,
    je realise un site de petite annonce et comme on m'a indiquer que je devrait uploader mes images j ai créer une base sql pour garder les donnée de la photo.
    J'ai trouver donc ce script qui marche nikel pour uploader les images:
    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
     
     
    traiter.php
     
    <?php
    include(redimage.php);
    if( isset($_POST['upload']) ) // si formulaire soumis
    {
        $content_dir = 'uploads/'; // dossier où sera déplacé le fichier
     
        $tmp_file = $_FILES['fichier']['tmp_name'];
     
        if( !is_uploaded_file($tmp_file) )
        {
            exit("Le fichier est introuvable");
        }
     
        // on vérifie maintenant l'extension
        $type_file = $_FILES['fichier']['type'];
     
        if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
        {
            exit("Le fichier n'est pas une image");
        }
     
        // on copie le fichier dans le dossier de destination
        $name_file = $_FILES['fichier']['name']);
     
    if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
    {
        exit("Nom de fichier non valide");
    }
    else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }
     
        echo "Le fichier a bien été uploadé";
    }
     
     
    ?>
    et je veux redimensionner pour qu'il soit moins lourd j ai donc trouver cette fonction:

    redimage.php:

    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
    <?PHP
    function redimage($img_src,$img_dest,$dst_w,$dst_h) {
       // Lit les dimensions de l'image
       $size = GetImageSize($img_src);  
       $src_w = $size[0]; $src_h = $size[1];  
       // Teste les dimensions tenant dans la zone
       $test_h = round(($dst_w / $src_w) * $src_h);
       $test_w = round(($dst_h / $src_h) * $src_w);
       // Si Height final non précisé (0)
       if(!$dst_h) $dst_h = $test_h;
       // Sinon si Width final non précisé (0)
       elseif(!$dst_w) $dst_w = $test_w;
       // Sinon teste quel redimensionnement tient dans la zone
       elseif($test_h>$dst_h) $dst_w = $test_w;
       else $dst_h = $test_h;
     
       // La vignette existe ?
       $test = (file_exists($img_dest));
       // L'original a été modifié ?
       if($test)
          $test = (filemtime($img_dest)>filemtime($img_src));
       // Les dimensions de la vignette sont correctes ?
       if($test) {
          $size2 = GetImageSize($img_dest);
          $test = ($size2[0]==$dst_w);
          $test = ($size2[1]==$dst_h);
       }
     
       // Créer la vignette ?
       if(!$test) {
          // Crée une image vierge aux bonnes dimensions
          // $dst_im = ImageCreate($dst_w,$dst_h);
          $dst_im = ImageCreateTrueColor($dst_w,$dst_h); 
          // Copie dedans l'image initiale redimensionnée
          $src_im = ImageCreateFromJpeg($img_src);
          // ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
          ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
          // Sauve la nouvelle image
          ImageJpeg($dst_im,$img_dest);
          // Détruis les tampons
          ImageDestroy($dst_im);  
          ImageDestroy($src_im);
       }
       }
       ?>
    mais je ne sais pas ou appeller la fonction dans ma page traiter.php.

    et le formulaire:

    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
    <form method="post" enctype="multipart/form-data" action="traiter.php">
    <p>
    <input type="file" name="fichier" size="30">
    <input type="submit" name="upload" value="Uploader">
    </p>
    
    
    merci de votre aide de plus comment l' inserer dans la base avec ces information la: 
    
    
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234567891011
    CREATE TABLE IF NOT EXISTS `image` (
      `up_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `up_filename` varchar(19) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
      `up_filesize` int(10) unsigned DEFAULT '0',
      `up_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
      `up_description` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
      `up_finalname` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
      `up_filedate` datetime DEFAULT NULL,
      `up_mid` int(5) DEFAULT '0',
      PRIMARY KEY (`up_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    </form>

    merci encore de votre aide qui j espéré m aideront.

  2. #2
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    il faut inclure ta function php de redimmensionnement dans la page de traitement de ton image uploadée je pense...sinon php ne saura pas ou trouver cette fonction !

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2005, 22h17
  2. Uploader une image à partir d'un formulaire ?
    Par netwebzone dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2005, 09h27
  3. [Upload] Upload d'image....
    Par tochbee dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2005, 11h44
  4. [Debutant] [JSP/Servlet] Upload d'image vers le serveur
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 05/07/2005, 17h42
  5. Upload d'images sur le forum
    Par KibitO dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 09/10/2004, 23h18

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