Upload de photo et redimensionnement

Répondre
eduardocosta
le 07/05/2009 à 14:06
eduardocosta
Bonjour. voici mon premier message sur ce forum, j'espère que vous pourrez m'aider car je suis au bout du rouleau et j'ai les méninges sans dessus dessous... Pour faire court, je n'ai jamais utiliser la librairie GD, et j'essaie de m'y mettre pour faire un truc tout bête, mais je dois avouer que je cale là.... Je cherche à redimensionner une image lors d'un upload php pour qu'elle fasse maximum 600x400, meme si l'utilisateur insère un fichier de 3Mo de 2000x1000px.
Ci dessous mon code, je ne comprends pas pourquoi ça ne marche pas, merci d'avance à ceux qui pourront m'aider...
<?
include("../connection.php");

$width_maxi = "600";
$height_maxi = "400";
$fichier = $_FILES ['fichier']['name'];
$tmp = $_FILES ['fichier']['tmp_name'];
$taille = $_FILES ['fichier']['size'];
$dimensions = getimagesize($tmp);
$nomid=$_POST['id'];
$Source = "../img/";
$Destination = "../img/";
copy($fichier, $Destination."img_".$fichier);
unlink($fichier);
$src1=imagecreatefromjpeg($Source."img_".$fichier);


$sql="INSERT INTO photos (img) VALUES ('$fichier')";
$resultat=mysql_query($sql);

if ($dimensions[0] > $width_maxi || $dimensions[1] > $height_maxi)
{
if($dimensions[0] <= $dimensions[1]) //image verticale
{
$coef = $width_maxi / $dimensions[1];
$new_width = $dimensions[0] * $coef;
$new_height = $dimensions[1] * $coef;
$im1 = ImageCreateTrueColor($dimensions[0], $dimensions[1]);
ImageCopyResampled($im1, $src1, 0, 0, 0, 0, $dimensions[0],$dimensions[1], $dimensions[0], $dimensions[1]);

}

else //image horizontale
{
if (($width_maxi / $dimensions[0]) < ($height_maxi / $dimensions[1]))
{
$coef = ($ratioL1 / $dimensions[0]);
$new_width = $dimensions[0] * $coef;
$new_height = $dimensions[1] * $coef;
$im1 = ImageCreateTrueColor($dimensions[0], $dimensions[1]);
ImageCopyResampled($im1, $src1, 0, 0, 0, 0, $dimensions[0],$dimensions[1], $dimensions[0], $dimensions[1]);

}
else
{
$coef = ($ratioH1 / $dimensions[1]);
$new_width = $dimensions[0] * $coef;
$new_height = $dimensions[1] * $coef;
$im1 = ImageCreateTrueColor($dimensions[0], $dimensions[1]);
ImageCopyResampled($im1, $src1, 0, 0, 0, 0, $dimensions[0],$dimensions[1], $dimensions[0], $dimensions[1]);

}
}
}
else
{
/* indiquer $dest_file qui correspond au répertoire de destination */
$dest_file="../img/".$fichier;
/* enlève un "\" */
$source_file=stripslashes($fichier);

/* copie du fichier */
//$res_copy=copy($source_file , $dest_file);
move_uploaded_file($_FILES['fichier']['tmp_name'],$dest_file);
chmod($dest_file, 0777);

}


?>

<body>

<div>INSERTION DE PHOTO</div>
<br />
taille recommandée : 600 pixels de large x 400 de haut
<form method="post" action="upload3.php" ENCTYPE="multipart/form-data">
<input name="fichier" type="file" id="fichier" size="20">
<br>
<input name="submit" type="Submit" value="VALIDER " border="0" onClick="submit">
</form>

</body>
Graphiste
moogli
le 07/05/2009 à 22:38
moogli
salut,

Qu'est ce qui ne fonctionne pas ?

A tu testé ton script bout par bout ?
je vois 3Mo dans ton message, qu'elle taille fait ton ficher de test ? (par défaut Php accepte des fichiers de max 2mo).

ce que je peut dire de ton script
ligne 14 copy($fichier, $Destination."img_".$fichier); tu copie un fichier qui n'existe pas (le fichier qui existe sur le serveur c'est celui du tmp_name, dans name c'est juste le nom).
ligne ben tu essai de supprimer un fichier qui n'existe pas

le reste travail sur des infos qui sont donc invalide.

Je te conseil de
1/ réaliser l'upload correctement, c'est a dire en vérifiant que le fichier soit bien une image etc le tout dans un répertoire temporaire
2/ Vérification de taille et, si besoin est, resize (du fichier temporaire)
3/ copie du fichier définitif que la phase 2 ai eu lieu ou non

Pour l'upload un brin d'info http://www.phpjungle.info/cours/10-comment-uploader-un-fichier-vers-son-site-via-http.html

Ps : pense a utiliser le BBcode pour poster ton code sur le forum et vu la longueur utilise le Wall ;)

@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours