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 et redimension image [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut upload et redimension image
    Bonjour, j'ai un souci pour redimensionner image uploader.
    J'ai suivi ce super tuto mais je ne sais pas ou je me suit planté.

    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
    //information de l'image
    $img_Src =  strtolower(basename($_FILES['image']['name']));
    $img_Dst = $_FILES['image']['tmp_name'];
    $rep_Src = "../../photo/sources/";
    $rep_Dest = "../../photo/miniatures/";
    $W_max = 170;
    $H_max = 150;
     
    $redImage = fctredimimage($W_max, $H_max, $rep_Dest, $img_Dst, $rep_Src, $img_Src);
     
    if($redImage == 1){
      //traitement
    }
    else {
    echo 'impossible de redimensionner l'iamge';
    }

    Le test de ma variable renvoi false.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    echo "";

    ou echo 'l/'image';

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Le problème n'est pas là, j'ai juste mis ça pour dire qu'il y a un traitement.
    C'est je pense au niveau de la fonction. Je mets tous le code:

    fonction redimensionné image

    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
    <?php
    function fctredimimage($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src) {
     $condition = 0;
     // Si certains paramètres ont pour valeur '' :
     if ($rep_Dst=='') { $rep_Dst = $rep_Src; } // (même répertoire)
     if ($img_Dst=='') { $img_Dst = $img_Src; } // (même nom)
     // ---------------------
     // si le fichier existe dans le répertoire, on continue...
     if (file_exists($rep_Src.$img_Src) && ($W_max!=0 || $H_max!=0)) { 
       // ----------------------
       // extensions acceptées : 
    	$extension_Allowed = 'jpg,jpeg,png';	// (sans espaces)
       // extension fichier Source
    	$extension_Src = strtolower(pathinfo($img_Src,PATHINFO_EXTENSION));
       // ----------------------
       // extension OK ? on continue ...
       if(in_array($extension_Src, explode(',', $extension_Allowed))) {
         // ------------------------
          // récupération des dimensions de l'image Src
          $img_size = getimagesize($rep_Src.$img_Src);
          $W_Src = $img_size[0]; // largeur
          $H_Src = $img_size[1]; // hauteur
          // ------------------------
          // condition de redimensionnement et dimensions de l'image finale
          // ------------------------
          // A- LARGEUR ET HAUTEUR maxi fixes
          if ($W_max!=0 && $H_max!=0) {
             $ratiox = $W_Src / $W_max; // ratio en largeur
             $ratioy = $H_Src / $H_max; // ratio en hauteur
             $ratio = max($ratiox,$ratioy); // le plus grand
             $W = $W_Src/$ratio;
             $H = $H_Src/$ratio;   
             $condition = ($W_Src>$W) || ($W_Src>$H); // 1 si vrai (true)
          }
          // ------------------------
          // B- HAUTEUR maxi fixe
          if ($W_max==0 && $H_max!=0) {
             $H = $H_max;
             $W = $H * ($W_Src / $H_Src);
             $condition = ($H_Src > $H_max); // 1 si vrai (true)
          }
          // ------------------------
          // C- LARGEUR maxi fixe
          if ($W_max!=0 && $H_max==0) {
             $W = $W_max;
             $H = $W * ($H_Src / $W_Src);         
             $condition = ($W_Src > $W_max); // 1 si vrai (true)
          }
          // ---------------------------------------------
          // REDIMENSIONNEMENT si la condition est vraie
          // ---------------------------------------------
          // - Si l'image Source est plus petite que les dimensions indiquées :
          // Par defaut : PAS de redimensionnement.
          // - Mais on peut "forcer" le redimensionnement en ajoutant ici :
          // $condition = 1; (risque de perte de qualité)
          if ($condition==1) {
             // ---------------------
             // creation de la ressource-image "Src" en fonction de l extension
             switch($extension_Src) {
             case 'jpg':
             case 'jpeg':
               $Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src);
               break;
             case 'png':
               $Ress_Src = imagecreatefrompng($rep_Src.$img_Src);
               break;
             }
             // ---------------------
             // creation d une ressource-image "Dst" aux dimensions finales
             // fond noir (par defaut)
             switch($extension_Src) {
             case 'jpg':
             case 'jpeg':
               $Ress_Dst = imagecreatetruecolor($W,$H);
               break;
             case 'png':
               $Ress_Dst = imagecreatetruecolor($W,$H);
               // fond transparent (pour les png avec transparence)
               imagesavealpha($Ress_Dst, true);
               $trans_color = imagecolorallocatealpha($Ress_Dst, 0, 0, 0, 127);
               imagefill($Ress_Dst, 0, 0, $trans_color);
               break;
             }
             // ---------------------
             // REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
             imagecopyresampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src); 
             // ---------------------
             // ENREGISTREMENT dans le repertoire (avec la fonction appropriee)
             switch ($extension_Src) { 
             case 'jpg':
             case 'jpeg':
               imagejpeg ($Ress_Dst, $rep_Dst.$img_Dst);
               break;
             case 'png':
               imagepng ($Ress_Dst, $rep_Dst.$img_Dst);
               break;
             }
             // ------------------------
             // liberation des ressources-image
             imagedestroy ($Ress_Src);
             imagedestroy ($Ress_Dst);
          }
          // ------------------------
       }
     }
     // ---------------------------------------------------
     // retourne : true si le redimensionnement et l'enregistrement ont bien eu lieu, sinon false
     if ($condition==1 && file_exists($rep_Dst.$img_Dst)) { return true; }
     else { return false; }
     // ---------------------------------------------------
    };
    ?>
    Code appel de la fonction et ajout dans la BDD

    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
    if ((isset($_POST['titre'])) && (isset($_POST['editor1'])) && (isset($_POST['alias'])) && (($_POST['categorie']) != "") && (($_POST['domaine']) != "")){
     
    			 $d= dateD();
     
    			//information de l'image
    			$img_Src =  strtolower(basename($_FILES['image']['name']));
    			$img_Dst = $_FILES['image']['tmp_name'];
    			$rep_Src = "../../photo/sources/";
    			$rep_Dest = "../../photo/miniatures/";
    			$W_max = 170;
    			$H_max = 150;
     
    			$redImage = fctredimimage($W_max, $H_max, $rep_Dest, $img_Dst, $rep_Src, $img_Src);
     
    		    if($redImage == 1){
    			    try {	
     
    					//On exécute la requete d'ajout
    					$query = $connect_db->prepare('INSERT INTO article (idart, titreart, alias, article, imageart, dateart, publication, categArt, position, iddossier, domaine, statut)
    																VALUES (:idart, :titre, :alias, :article, :imageart, :dateart, :publication, :categArt, :position, :iddossier, :domaine, :statut)');
     
    					$success = $query->execute(array(
    						':idart' => '',
    						':titre' => $_POST['titre'],
    						':alias'=> $_POST['alias'],
    						':article' => $_POST['editor1'],
    						':imageart' => $image,
    						':dateart' => $d,
    						':publication' => $_POST['publication'],
    						':categArt' => $_POST['categorie'],
    						':position' => $_POST['position'],
    						':iddossier' =>  $iddossier,
    						':domaine' => $_POST['domaine'],
    						':statut' => $_POST['statut']
    						)); 
     
     
    					  if ($success != false){  //La requete s'est exécutée correctement
     
    						   echo("<script language=\"javascript1.2\">
    							alert(\"Ajout effectue avec sucess...\")
    							document.location.href = 'index.php';
    							</script>");
    					  } 
    						 else {  //La requete ne s'est pas exécutée correctement
    							 echo "<script language=\"javascript1.2\">
    								alert(\"Echec de la mise a jour...\")
    								document.location.href = 'ajouter-article.php';
    							 </script>";
    						 }
    					} 
    					catch(PDOException $e){
    					  echo "<h1>Une erreur s'est produite lors de l'enregistrement</h1>";
    					}
     
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    c'est en effet un très bon tuto

    ATTENTION ! => "REDIMENSIONNEMENT et SAUVEGARDE de la PHOTO (si nécessaire)"
    La fonction renvoie true UNIQUEMENT si un redimensionnement a bien eu lieu !
    c-à-d que l'image est effectivement plus grande que les dimensions demandées.


    Il faut D'ABORD enregistrer l'image (move_uploaded_file), comme dans l'exemple.
    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
    		// --------------------
    		// enregistement de la PHOTO sous forme id_nom-image(.jpg, ...)
    		// NB : id etant unique (auto-increment), cela rend le nom de la photo unique
    		$file_Upload 		= $newsId.'_'.$_FILES['newsPhoto']['name'];
     
    // ...................
     
    		// --------------------
    		// enregistrement de la photo dans le dossier
    		$temp = $_FILES['newsPhoto']['tmp_name'];
    		move_uploaded_file($temp, '../../'.REP_NEWS_PHOTO.$file_Upload);
    		// --------------------
    		// REDIMENSIONNEMENT et SAUVEGARDE de la PHOTO (si necessaire)
    		// ecraser (remplacer) la photo (meme rep, meme nom)
    		$redimPHOTOOK 		= fctredimimage($newsPhotoLargeur,0,'','','../../'.REP_NEWS_PHOTO,$file_Upload);
    		// --------------------
    D'autre part, pourquoi enregistrer la miniature avec le temp_name ???
    => mets le même nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $img_Src =  strtolower(basename($_FILES['image']['name']));
    $img_Dst = $img_Src;

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Merci jreaux62 et reverb94. Problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [GD] Redimension et upload d'une image
    Par gpsevasion dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/04/2010, 19h57
  2. Erreur redimension image
    Par carter15_2001 dans le forum Langage
    Réponses: 10
    Dernier message: 27/01/2006, 21h38
  3. [Upload] envoyer une image
    Par carter15_2001 dans le forum Langage
    Réponses: 22
    Dernier message: 20/01/2006, 18h52
  4. [Upload] Renommer une image uploadée
    Par Empty_body dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2006, 06h51
  5. [Upload] upload de fichier images
    Par omlip dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2006, 23h13

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