Page 1 sur 1

redimensionner des images

Posté : 14 nov. 2007, 23:10
par choubix
hello,

toujours dans l'idee d'uploader des fichiers via un formulaire je me suis dit que ca serait pas bete de limiter la taille des images qui s'affiche sur la page1. si l'utilisateur veut afficher plus d'infos il ira donc sur la page2 avec des images en taille normale.

donc, plutot que de me taper tout a partir de 0 j'ai fouille un peu le net et je suis tombe sur un script qui marche nickel si je l'utilise en standalone. le truc c'est que l'adapatation de CE script dans MON script ne passe pas.

dans mon script j'upload des images, je genere de maniere aleatoire le nom puis je stocke les fichiers dans le repertoir "gifts". ca ca marche.

maintenant la partie pour redimmensionner me renvoit une page blanche (je soupsonne que ca vient du header qui a du deja etre envoye)

par ailleurs je voudrais pouvoir recuperer les thumbnails et les stocker dans une table (la meme qui stocke le chemin + nom des images en taille normale). je suppose que je vais devoir utiliser un tableau avant ma boucle (genre $thumb_Array=array() )

donc si qq un a une idee de comment je peux integrer ce script correctement ca serait cool :)

merci
						{
							//echo $_FILES['image']['tmp_name'][$key];
							if(empty($upload) && is_uploaded_file($_FILES['image']['tmp_name'][$key]))
							{
							//create a random name for the uploaded file
							$date = date ("Ymd");
							$name = random_string();
							$uploadname = $date.'_'.$name.'.'.$extension;
							
							$name_array[] = "$uploadname";
							
							$i++;
							
							//move_uploaded_file($_FILES['image']['tmp_name'][$key],$uploaddir.'/'.$uploadname);
							
							
							//Start Thumbnail script
							//This will set our output to 50% of the original size
							$size = 0.50;
							
							// This sets it to a .jpg, but you can change this to png or gif
							header('Content-type: image/jpeg');
							
							// Setting the resize parameters
							list($width, $height) = getimagesize($uploadname);
							$modwidth = $width * $size;
							$modheight = $height * $size;
							
							// Resizing the Image
							$tn = imagecreatetruecolor($modwidth, $modheight);
							$image = imagecreatefromjpeg($uploadname);
							imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
																												
							// Outputting a .jpg, you can make this gif or png if you want
							//notice we set the quality (third value) to 100
							imagejpeg($tn, null, 70);
							
							$upload = true;
																		
							}

Posté : 15 nov. 2007, 12:43
par choubix
bon, moi ca n'avance pas d'un iota. ah si: je crois qu'il faut que j'utilise la fonction createThumbs() afin d'ecrire mon jpg dans un repertoire...

sinon mes petits jeux avec le script de redimensionnement ne menet a rien :(

Posté : 15 nov. 2007, 19:26
par Invité
personne? vous avez deserte le forum? la vue d'un script de redimensionnement vous fait peur? avouez: vous tremblez dans vos bottes!! ;)

Posté : 15 nov. 2007, 20:23
par Ryle
Quelques remarques :

- comme son nom l'indique, la fonction imagecreatefromjpeg() permet de créer une ressource image à partir d'un jpeg, et uniquement d'un jpeg. pour un gif ou un png il a des fonctions spécifiques.
- ton but est de générer un nouveau fichier et de le stocker sur le disque et non de l'envoyer à l'utilisateur, le header ne sert donc à rien ici (en fait, le but de ce header est de te permettre de générer une image à la volée et l'envoyer au navigateur sans avoir à la stocker sur le disque, comme les captcha par ex.)

Posté : 15 nov. 2007, 20:49
par choubix
salut ryle,

je pense ne traiter que des jpg en fait (au pire je pensais faire des if() et changer les fonctions au besoin pour traiter les autres formats)

j'avais vire le header mais ca me retourne une page blanche. avec le header ca me renvoit le chemin et le nom du fichier qui traite le script.

je me suis dit que le soucis venait de la derniere fonction qui est l'appel du fichier cree...


en fait mon but c'est de cree des thumbnails des images que j'ai traite juste avant et de les stocker physiquement sur le serveur et de mettre leur chemin dans la base de donnee.

Posté : 17 nov. 2007, 13:15
par Ryle
Tu as effectivement une erreur dans l'utilisation de la fonction imageJpeg :
 imagejpeg($tn, null, 70); 
Si tu regardes la documentation concernant le deuxième paramètre filename : Le chemin vers le fichier sauvegardé. S'il n'est pas défini ou s'il vaut NULL, le flux brut de l'image sera affiché directement.

Moralité, c'est qu'il te faut donner le chemin du dossier et le nom de la vignette pour qu'elle soit conservée sur ton serveur. (chemin et nom qu'il te suffit ensuite de stocker dans ta base si nécessaire :))

Posté : 17 nov. 2007, 14:42
par Invité
salut Ryle,

je n'ai pas encore essaye de changer le chemin. juste comme ca (a premiere vue) ca ne devrait pas au moins m'afficher l'image dans le cas present??

bon je vais esayer ta manip :)

merci!