redimensionner des images

Eléphant du PHP | 319 Messages

14 nov. 2007, 23:10

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;
																		
							}
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 319 Messages

15 nov. 2007, 12:43

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 :(
niveau: pas terrible en php mais je me soigne...

Invité
Invité n'ayant pas de compte PHPfrance

15 nov. 2007, 19:26

personne? vous avez deserte le forum? la vue d'un script de redimensionnement vous fait peur? avouez: vous tremblez dans vos bottes!! ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 nov. 2007, 20:23

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.)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 319 Messages

15 nov. 2007, 20:49

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.
niveau: pas terrible en php mais je me soigne...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 nov. 2007, 13:15

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 :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

17 nov. 2007, 14:42

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!