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
| $nom_mini = $chemin."mini_".$nomfichier; |
|
Alors que plus haut tu déclares la variable
| $nomFichier = $_FILES["fichier"]["name"] ; |
|
Il faut soit mettre la majuscule soit tout en minuscule.
pareil pour
| $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.
|