8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

IL s'agit d'un simple script PHP4 qui charge une image dans la bdd et devrait la redimensionner avant de la copier dans un dossier. Rien de bien compliquer... mais j'ai beau chercher sur google y a un truc qui m'échappe Smiley bawling .

Mon message d'erreur :
imagecopyresampled(): supplied argument is not a valid Image resource

Je présume un pb avec l'image temporaire, si vous avez des pistes ou des conseils ce serait super.

	 

list($GLOBALS['largeurbig'], $GLOBALS['hauteurbig']) = getimagesize($_FILES['image']['tmp_name']); 
	
$taille_max_big = 600;
if ($GLOBALS['largeurbig'] <= $GLOBALS['hauteurbig']) {								
	$ratio_big = $GLOBALS['hauteurbig'] / 500;
	} else {
	$ratio_big = $GLOBALS['largeurbig'] / $taille_max_big;
	}
	
	// Définition des dimensions 
	$larg_big = $GLOBALS['largeurbig'] / $ratio_big;
	$haut_big = 500;
	
	// Crée la ressource image 
	$destinationbig = imagecreatetruecolor($larg_big, $haut_big);
	// Redimensionne la grande image
	imagecopyresampled(	        $destinationbig,
						$_FILES['image']['tmp_name'], 
						0, 0, 0, 0,
						$larg_big,
						$haut_big,
						$GLOBALS['largeurbig'],
						$GLOBALS['hauteurbig']);	 
   
$dest_fichier = basename($destinationbig);	 	
// copie du fichier
move_uploaded_file($_FILES['image']['tmp_name'], $dest_dossier.$dest_fichier);
 $ajout="La photo <b>".$commentaire."</b> est ajouté avec succès"; $commentaire = ""; $id_galerie=""; $image="";   




Voilà si quelqu'un a des idées je suis preneur
Merci d'avance
LOD
Modifié par loddesign (24 Nov 2008 - 20:51)
J'ai finalement trouvée la bonne piste


$ratiobig = 400;	
 $tableau = @getimagesize($_FILES['image']['tmp_name']);
                // si notre image est de type jpeg
                if ($tableau[2] == 2) {
                   
                    $src = imagecreatefromjpeg($_FILES['image']['tmp_name']);
                    // on teste si notre image est de type paysage ou portrait
                    if ($tableau[0] > $tableau[1]) {
                        $im = imagecreatetruecolor(round(($ratiobig/$tableau[1])*$tableau[0]), $ratiobig);
                        imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratiobig/$tableau[1])*$tableau[0]), $ratiobig, $tableau[0], $tableau[1]);
                    imagejpeg ($im, $dest_dossier.'/'.$_FILES['image']['name']);}
                    else {
                        $im2 = imagecreatetruecolor($ratiobig, round(($ratiobig/$tableau[0])*$tableau[1]));
                        imagecopyresampled($im2, $src, 0, 0, 0, 0, $ratiobig, round($tableau[1]*($ratiobig/$tableau[0])), $tableau[0], $tableau[1]);
                    imagejpeg ($im2, $dest_dossier.'/'.$_FILES['image']['name']);}
                    // on copie notre fichier généré dans le répertoire des miniatures
                    
					
               }
                elseif ($tableau[2] == 3) {
                    $src = imagecreatefrompng($_FILES['image']['tmp_name']);
                    if ($tableau[0] > $tableau[1]) {
                        $im = imagecreatetruecolor(round(($ratiobig/$tableau[1])*$tableau[0]), $ratiobig);
                        imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratiobig/$tableau[1])*$tableau[0]), $ratiobig, $tableau[0], $tableau[1]);
                    imagepng ($im, $dest_dossier.'/'.$_FILES['image']['name']);}
                    else {
                        $im2 = imagecreatetruecolor($ratiobig, round(($ratiobig/$tableau[0])*$tableau[1]));
                        imagecopyresampled($im2, $src, 0, 0, 0, 0, $ratiobig, round($tableau[1]*($ratiobig/$tableau[0])), $tableau[0], $tableau[1]);
                  imagepng ($im2, $dest_dossier.'/'.$_FILES['image']['name']);  }
                  
                }

Modifié par loddesign (24 Nov 2008 - 20:46)