Page 1 sur 1

redimensionnement d'images et sauvegarde

Posté : 12 févr. 2005, 17:10
par SethSatan
Bonjour

Je souhaite récuperer une image envoyé par un utilisateur via un formulaire,
le problème est que de nombreux messages d'erreur s'affichent, j'ai pourtant "repris" un script du livre PHP5 avancé.

Voici les erreurs:

Code : Tout sélectionner

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in j:\www\project\sethsatan\add.inc.php on line 22 Warning: imagecopyresampled(): supplied argument is not a valid Image resource in j:\www\project\sethsatan\add.inc.php on line 24 Warning: Cannot modify header information - headers already sent by (output started at j:\www\project\sethsatan\add.inc.php:22) in j:\www\project\sethsatan\add.inc.php on line 26 Warning: imagejpeg(): supplied argument is not a valid Image resource in j:\www\project\sethsatan\add.inc.php on line 30 Warning: imagejpeg(): supplied argument is not a valid Image resource in j:\www\project\sethsatan\add.inc.php on line 31 Warning: imagedestroy(): supplied argument is not a valid Image resource in j:\www\project\sethsatan\add.inc.php on line 34
et voici le code:
/*******************/
		//manipulation image
		/*******************/
		//recuperation de l'image envoyé via la superglobale
		$img = imagecreatefromjpeg ($tmp_name);

		//taille de limage
		$size = getimagesize($tmp_name);
		//largeur de limage
		$larg = $size[0];
		//longueur de limage
		$long = $size[1];
		//redimensionnement
		$newlarg = $larg*20/100;
		$newlong = $long*20/100;
		//image de destination
		$$img_dest = imagecreatetruecolor($newlarge,$newlong);
		//create new image
		$copy = imagecopyresampled($img_dest,$img,0,0,0,0,$newlarg,$newlong,$larg,$long);
		// type de fichier
		header('Content-Type: image/jpeg');
		//nom du fichier
		$fichier = $name;
		//envoi de limage
		imagejpeg($img_dest);
		imagejpeg($img_dest,'apercu/'.$fichier);
		imagejpeg($img,'photos/'.$fichier);
		//liberer la memoire
		imagedestroy($img_dest);
		/***********************/
		//fin manipulation image
		/***********************/
j'ai pourtant activé l'extension gd2 dans php.ini
et rien a faire, j'ai tout ces messages d'erreur...

a oui pour finir, la variable $img (l'image non redimensionné) me renvoie: "Resource id #6" ...

si quelqu'un peut m'aider s'il vous plait!

merci d'avance

Posté : 12 févr. 2005, 17:20
par jeff
tu peut pas redimenssioner l'image comme tu la fait il faut passer par
imageSX() et imageSX()
        $img = imagecreatefromjpeg ($tmp_name);

        //taille de limage
        $size = getimagesize($tmp_name);
        //largeur de limage
        $lag=ImageSX($size);
        //longueur de limage
        $long = ImageSX($size);
        //redimensionnement
        $newlarg = $larg*20/100;
        $newlong = $long*20/100;
        //image de destination
        $img_dest = imagecreatetruecolor($newlarge,$newlong);
ca sa devrait fonctionner

Posté : 12 févr. 2005, 17:25
par SethSatan
euh.. merci de ton aide,
mais apparament il y a encore plus d'erreur...
donc ca marche toujours pas...

Posté : 12 févr. 2005, 17:30
par iclo
Pourrais-tu nous montrer les erreurs et le code complêt de ta page ?

Posté : 12 févr. 2005, 17:31
par SethSatan
c'est exactement ce que j'ai mis dans le premier post...

Posté : 12 févr. 2005, 17:32
par jeff
je crois avoir trouver
imagecreatetruecolor()
doit avoir des parametres de type int
il faut lui specifier la taille en pixel

Posté : 12 févr. 2005, 17:35
par iclo
?? As-tu fait les modifications conseillées par Jeff ?

L'erreur des header, indique, qu'il y a du code avant le code php que tu nous donnes...

Posté : 12 févr. 2005, 17:38
par SethSatan
j'ai fait les modif de jeff et maintenant l'image non redimensionné est ok mais pas celle redimensionné...

Posté : 12 févr. 2005, 17:45
par iclo
Peut-on voir le code avec les modifications que tu y as effectué ??? :D :D

Posté : 12 févr. 2005, 18:17
par SethSatan
Ca marche!!!!!
je suis vraiment desolé de vous avoir dérangé, mais encore une fois je n'ai pas été assez attentif, en effet j'avait ecrit $newlarge au lieu de $newlarg et ca entrainait des erreurs sur toutes les autre fonctions GD
voila encore une fois désolé!

voici le script qui marche pour les curieux:
        /*******************/
        //manipulation image
        /*******************/
        //recuperation de l'image envoyé via la superglobale
        $img = imagecreatefromjpeg ($tmp_name);

        //taille de limage
        $size = getimagesize($tmp_name);
        //largeur de limage
        $larg = $size[0];
        //longueur de limage
        $long = $size[1];
        //redimensionnement
        $newlarg = $larg*20/100;
        $newlong = $long*20/100;
        //image de destination
        $img_dest = imagecreatetruecolor($newlarg,$newlong);
        //create new image
        $copy = imagecopyresampled($img_dest,$img,0,0,0,0,$newlarg,$newlong,$larg,$long);
        // type de fichier
        header('Content-Type: image/jpeg');
        //nom du fichier
        $fichier = $name;
        //envoi de limage
        imagejpeg($img_dest);
        imagejpeg($img_dest,'apercu/'.$fichier);
        imagejpeg($img,'photos/'.$fichier);
        //liberer la memoire
        imagedestroy($img_dest);
        $lien = 'photos/'.$fichier;
        $apercu = 'apercu/'.$fichier;
        /***********************/
        //fin manipulation image
        /***********************/
merci encore pour ceux qui ont essayé de m'aider

héhé

Posté : 09 mars 2005, 23:02
par cyruss
Ben ouai t'as mis mon livre trop rapidement en doute ;)

++

cyruss