Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: 28ToM47 le le 28-03-2009 a 21:27:30

Titre: [Résolu] Problème de redimensionnement d'image (libraire GD)
Posté par: 28ToM47 le le 28-03-2009 a 21:27:30

Bonjour à tous !

Je veux mettre en place sur mon portfolio un formulaire me permettant d'ajouter directement mes images sur mon site.
le principe dus cript :
-> on upload une image
-> on crèe 2 miniatures
-> on redimensionne l'image principale si sa hauteur dépasse 800 pixels

Il n'y a pas d'erreurs pendant le fonctionnement, le fichier principal est uploadé correctement, cependant les miniatures ne sont pas créée, mais si je regarde sur mon ftp, un fichier "mini_" et un fichier "_miniatures" sans extensions seront créés.
le script me dit même que tous les fichiers ont été uploadés.

voici mon script


Code:
<?php
define('MAX_SIZE', 10000000);
define('WIDTH_MAX', 10000);
define('HEIGHT_MAX', 10000);

// Paramètre -> image_create_thumb($filename, $width, $height, $filename_destination)
// $filename -> adresse de l'image
// $width -> largeur de la miniature voulu
// $height -> grandeur de la miniature voulu
// $filename_destination -> destination de l'image

function image_create_thumb($filename, $width, $height, $filename_destination)
{
list($image["Width"], $image["Height"], $image["Type"]) = getimagesize($filename);

if($image["Type"] == IMG_JPG || $image["Type"] == IMG_JPEG)
{
$im_image = ImageCreateFromJPEG($filename);
}
if($image["Type"] == IMG_GIF)
{
$im_image = ImageCreateFromGIF($filename);
}
if($image["Type"] == IMG_PNG)
{
$im_image = ImageCreateFromPNG($filename);
}

if($image["Width"] > $image["Height"])
{
$scale = $width / $image["Width"];
$thumb_width = $width;
$thumb_height = floor($image["Height"]*$scale);
}
else
{
$scale = $height / $image["Height"];
$thumb_height = $height;
$thumb_width = floor($image["Width"]*$scale);
}

$im_thumb = @ImageCreateTrueColor($thumb_width, $thumb_height) or die("Impossible de généré l'image à partir du module GD de PHP");

ImageCopyResampled($im_thumb,$im_image,0,0,0,0,$thumb_width,$thumb_height,$image["Width"],$image["Height"]);

ImageDestroy($im_image);
      
      if($image["Type"] == IMG_JPG || $image["Type"] == IMG_JPEG)
{
ImageJPEG($im_thumb, $filename_destination, 100);
}
if($image["Type"] == IMG_GIF)
{
ImageGIF($im_thumb, $filename_destination);
}
if($image["Type"] == IMG_PNG)
{
ImagePNG($im_thumb, $filename_destination);
}

ImageDestroy($im_thumb);

return true;
}
   // pour transmettre les informations à la page d'après
   $message = "";


//on verifie si le formulaire est rempli
if(!empty($_POST))
{

//on vérifies que le champ est bien rempli:
if(!empty($_FILES["fichier"]["name"]))
{
   //nom du fichier choisi:
   $nomFichier = $_FILES["fichier"]["name"] ;
   //nom temporaire sur le serveur:
   $nomTemporaire = $_FILES["fichier"]["tmp_name"] ;
   //type du fichier choisi:
   $typeFichier = $_FILES["fichier"]["type"] ;
   //poids en octets du fichier choisit:
   $poidsFichier = $_FILES["fichier"]["size"] ;
   //code de l'erreur si jamais il y en a une:
   $codeErreur = $_FILES["fichier"]["error"] ;
   // On recupere les dimensions du fichier
   $infosImg = getimagesize($_FILES['fichier']['tmp_name']);

   
   //chemin qui mène au dossier qui va contenir les fichiers uplaod:
   $chemin = "images/travaux/" ;

   if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier)){
      $message = $message."<br>l'upload sur le serveur a réussi";
         // calcul des nouvelles dimensions d'images
         $y = 226; // image du slider
         $x = ($infosImg[0] * $y) / $infosImg[1];

         $y2 = HEIGHT_MAX; // image taille normale
         $x2 = ($infosImg[0] * $y2) / $infosImg[1];

         $x3 = 45; // miniature
         $y3 = ($infosImg[1] * $x3) / $infosImg[0];
         

         //création de la miniature du slider
         $nom_mini = $chemin."mini_".$nomfichier;
         if (image_create_thumb($chemin.$nomFichier,$x,$y,$nom_mini))
            {$message = $message."<br /> Miniature du slider crée (".$x."x".$y." px.";}
            else{$message = $message."<br /> Impossible de créer la miniature slider";}
         //création de la petite miniature
         $nom_miniature = $chemin."miniature_".$nomfichier;
         if (image_create_thumb($chemin.$nomFichier,$x3,$y3,$nom_miniature))
            {$message = $message."<br /> Petite miniature crée (".$x3."x".$y3." px.";}
            else{ $message = $message."<br /> Impossible de créer la petite miniature";}
         //si la hauteur est supérieure à la hauteur max autorisée, on redimensionne
         $nom_normal = $chemin.$nomFichier;
         if ($infosImg[1] > HEIGHT_MAX){
            if (image_create_thumb($chemin.$nomFichier,$x2,$y2,$nom_normal))
            {$message = $message."<br /> image redimensionnée de ".$infosImg[0]."x".$infosImg[1]." à ".$x2."x".$y2.".";}
            else{$message = $message."<br />Impossible de redimensionner l'image uploadée sur le serveur";               
            }
         }            
         // connexion et enregistrement des données sur la BDD
         $post_titre = $_POST['titre'];
         $post_categorie = $_POST['categorie'];
         $post_image = $nomFichier;
         $post_description = $_POST['description'];
         $post_client = $_POST['client'];
         $post_type = $_POST['type'];
         $db = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
         if (!$db)
          {
          die('Could not connect: ' . mysql_error());
            }
         mysql_select_db($dbname,$db);
         $req = "INSERT INTO infos_images (titre , cat , image , description , client , type) VALUES ('$post_titre','$post_categorie','$post_image','$post_description','$post_client','$post_type')";
         if (!mysql_query($req,$db))
          {
            die('Error: ' . mysql_error());
         }else{$message = $message."<br />données inscrites dans la BDD"; }
                  
         mysql_close();
         
      }
   else{
      $message = $message."<br>l'upload a échoué";}
}//fin if
else
{
   $message = $message."Vous n'avez pas choisit de fichier!!<br>";
   $message = $message."<a href=\"./choix_fichier.html\">Retour</a>" ;
}//fin else


}

?>



Merci d'avance !

Titre: Re:problème de redimensionnement d'image (libraire GD)
Posté par: Krash le le 29-03-2009 a 00:44:00

Bonsoir,

tu as mis ceci
Citation:
$nom_mini = $chemin."mini_".$nomfichier;


Alors que plus haut tu déclares la variable
Citation:
$nomFichier = $_FILES["fichier"]["name"] ;


Il faut soit mettre la majuscule soit tout en minuscule.



pareil pour
Citation:
$nom_miniature = $chemin."miniature_".$nomfichier;

Titre: Re:problème de redimensionnement d'image (libraire GD)
Posté par: 28ToM47 le le 29-03-2009 a 03:16:41

Merci beaucoup !

Je sais pas comment j'ai pu faire cette si petite et si bête erreur. En tout cas, joli coup d'oeil, et encore merci :p

Titre: Re:problème de redimensionnement d'image (libraire GD)
Posté par: ToToMaStEr le le 04-04-2009 a 20:52:27

Félicitation pour ton code, il est agréable de lire des codes commentés et indentés!!


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.