Redimensionnement d'image à l'upload

Signaler
Messages postés
6
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
3 décembre 2008
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour @ tous,
voilà c'est mon premier site en PHP que j'essai de réalisé en piochant des éléments à droite et à gauche. Dans celui-ci j'ai une section avec un petit agenda tout simple que j'ai créé. J'ai une image à coté de chacun. Cependant, pour évité d'avoir de grosses images recalculé par le code HTML/CSS, j'aimerai pouvoir redimensionner les images à l'envoi.

Voici mes extraits de code qui traitent la fonction :

if(!isset($_FILES['photo'])) $photo="";
else $photo=$_FILES['photo'];

// Le fichier
$filename = basename($_FILE['photo']['tmp_name']);

// Définition de la largeur et de la hauteur maximale
$width = 108 ;
$height = 72 ;

// Cacul des nouvelles dimensions
list( $width_orig , $height_orig ) = getimagesize ( $filename );

$ratio_orig = $width_orig / $height_orig ;

if ( $width / $height > $ratio_orig ) {
   $width = $height * $ratio_orig ;
} else {
   $height = $width / $ratio_orig ;
}

// Redimensionnement
$image_p = imagecreatetruecolor ( $width , $height );
$image = imagecreatefromjpeg ( $filename );
imagecopyresampled ( $image_p , $image , 0 , 0 , 0 , 0 , $width , $height , $width_orig , $height_orig );

/*// Affichage
ob_start();
imagejpeg ( $image_p , null , 100 );
$image_blob = ob_get_clean();*/

$filename=ereg_replace(' ','-',$filename);
$filename=ereg_replace('\'','-',$filename);
move_uploaded_file($image ['tmp_name'],"images/artistes/photo_".$filename);      // name et tmp_name fonctions php et non variables (tags) | on prends nom photo depuis zone temporaire navigateur pour la bouger vers le serveur.

$connexion=mysql_connect("localhost","root","");
mysql_select_db("ajc",$connexion);

$requete="INSERT INTO agenda(titre,type,descriptif,photo,affiche,date,heure,affichage) VALUES('$titre','$type','$descriptif','$filename','$nomaffiche','$date','$heure','$affichage')";
mysql_query($requete) or die(mysql_error());
mysql_close($connexion);

Donc au final j'ai rien dans mon dossier, et dans le champ "photo" de ma table SQL rien non plus...
Aucun message d'erreur à l'envoi. Cependant, j'ai des infos dans le log php_error :

[02-Dec-2008 18:12:55] PHP Warning:  Division by zero in H:\wamp\www\Auditorium Jean Cocteau\agenda_ajout_t.php on line 44

[02-Dec-2008 18:12:55] PHP Warning:  imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in H:\wamp\www\Auditorium Jean Cocteau\agenda_ajout_t.php on line 53

[02-Dec-2008 18:12:55] PHP Warning:  imagecopyresampled(): supplied argument is not a valid Image resource in H:\wamp\www\Auditorium Jean Cocteau\agenda_ajout_t.php on line 55

Voilà, merci d'avance pour vos réponses ;)
++
Alexandre

5 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut

ta ligne 44, j'imagine que c'est :
$ratio_orig = $width_orig / $height_orig ;

ca s'ignifie qu'il n'arrive pas a voir la taille de ton image.

$filename = basename($_FILE['photo']['tmp_name']);
pourquoi tu mets basename ? si tu laisses le basename, alors ton chemin est faux.
Messages postés
6
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
3 décembre 2008

j'ai besoin du basename pour que l'extension soit enregistrer avec le nom du fichier dans ma BDD.
As-tu une solution pour procéder autrement si le problème vient de là ?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
remplace : getimagesize ( $filename );
par :

getimagesize ( $_FILE['photo']['tmp_name'] );
Messages postés
6
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
3 décembre 2008

j'ai toujours rien après avoir remplacer getimagesize ( $filename );
par getimagesize ( $_FILE['photo']['tmp_name'] );

(rien dans le dossier, rien en BDD)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
$image = imagecreatefromjpeg ( $filename );

ici aussi ton filename est faux.

tes messages d'erreurs sont toujours la ?