Upload d'img avec resize

cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005 - 2 juin 2004 à 13:54
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005 - 3 juin 2004 à 12:22
Salut tlm !
J'essais d'uper des img en creant une version reduite de celle ci mais ca marche pas trop. Je suis plutot débutant niveau php et on ma passé se script que je n'arrive pas a faire fonctionner si qqn peut m'aider ce serait cool ^^

//le fichier html:

sélectionnez l'image
<form action="upload.php" method="post" enctype="multipart/form-data">





</form>

//le fichier php:

<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?php 
//repertoire d'arrivé des images
$uploaddir = 'images/';
//taille max
$tailleMax=1000000;

if($_FILES['userfile']['size']>$tailleMax){ 
$depasse=$_FILES['userfile']['size']-$tailleMax;
$poidKo=$_FILES['userfile']['size']/1024;
$tailleM=$tailleMax/1024;

print "Le fichier est trop lourd, veuillez ne pas dépasser ".round($tailleM,0)." Ko :\n
Votre fichier pèse ".round($poidKo,0)." Ko et dépasse la limite de ".$depasse." octets ";
}
else{
if($_FILES['userfile']['type']=="image/jpeg"||$_FILES['userfile']['type']=="image/pjpeg"||$_FILES['userfile']['type']=="image/jpg"||$_FILES['userfile']['type']=="image/gif"||$_FILES['userfile']['type']=="image/png"){
$name=$_FILES['userfile']['tmp_name'];
list($width, $height, $type, $attr)=getimagesize("$name");
print "\n\n La taille de l'image est ".$width." * ".$height."\n";

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']))   {
   		 	print "Le fichier est valide, et a été téléchargé avec succès.\n\n";

//redimension de l'image uploadé
$taille=200; // longueur souhaité pour l'image
$qualite=100; // qualite du jpeg
$chaine=$_FILES['userfile']['name'];
$facteur=$width/$taille;
$l=round($width/$facteur,0);
$h=round($height/$facteur,0);

if($_FILES['userfile']['type']=="image/jpeg"||$_FILES['userfile']['type']=="image/pjpeg"||$_FILES['userfile']['type']=="image/jpg"){
$src = imagecreatefromjpeg($uploaddir . $_FILES['userfile'] ['name']);//cree une instance de l'image DL 

$im = @ImageCreateTrueColor ($l, $h) or die ("Erreur lors de la création de l'image");//cree une image vide en vraie couleur de la taille de la miniature
   				ImageCopyResampled($im,$src, 0, 0, 0, 0, $l,$h, $width, $height);//
ImageString ($im, 5, 2, 2, $chaine,imagecolorallocate($im, 0, 0, 240) );//ecri le nom de l'image(image,police,x,y,couleur)

imagejpeg($im, "imagesmini/".$_FILES['userfile'] ['name'],$qualite);//ecrit sur le disque (imagesource,detination, qualité)
}

if($_FILES['userfile']['type']=="image/gif"){
$src = imagecreatefromgif($uploaddir . $_FILES['userfile'] ['name']);//cree une instance de l'image DL 

$im = @ImageCreateTrueColor ($l, $h) or die ("Erreur lors de la création de l'image");//cree une image vide en vraie couleur de la taille de la miniature
   				ImageCopyResampled($im,$src, 0, 0, 0, 0, $l,$h, $width, $height); //
ImageString ($im, 5, 2, 2, $chaine,imagecolorallocate($im, 0, 0, 240) )//ecri le nom de l'image(image,police,x,y,couleur)

imagepng($im, "imagesmini/".$_FILES['userfile'] ['name'],$qualite);//ecrit sur le disque (imagesource,detination, qualité)
}
if($_FILES['userfile']['type']=="image/png"){
$src = imagecreatefrompng($uploaddir . $_FILES['userfile'] ['name']);//cree une instance de l'image DL 

$im = @ImageCreateTrueColor ($l, $h) or die ("Erreur lors de la création de l'image");//cree une image vide en vraie couleur de la taille de la miniature
   				ImageCopyResampled($im,$src, 0, 0, 0, 0, $l,$h, $width, $height); //
ImageString ($im, 5, 2, 2, $chaine,imagecolorallocate($im, 0, 0, 240) );//ecri le nom de l'image(image,police,x,y,couleur)

imagepng($im, "imagesmini/".$_FILES['userfile'] ['name']);//ecrit sur le disque (imagesource,detination, qualité)
}
print "Pour être en conformité avec le site il à été redimensionné à la taille $l * $h\n\n";

} else {
    		echo "Attaque par upload potentielle. Voici plus d'informations :\n";
    		print_r($_FILES);
}
}else{
print "Le fichier n'est pas de type jpeg,png ou gif mais de type ".$_FILES['userfile']['type'];
}
}

//liberation des resources
imagedestroy();
?> 

</html>

4 réponses

cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
2 juin 2004 à 14:07
Si je remplace image/jpg image/png etc ... par images/jpg images/png (je mes des "s" car mon chemin est: $uploaddir = 'images/';
J'ai un probleme avec la fonction imagedestroy(); sirué tout en bas.
Je l'ai desactivé pour voir et la je n'ai plus d'eereur il me dit qu'il cré la miniature mais rien. La grande image est uploadé mais pas la petite.
0
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
2 juin 2004 à 15:58
Salut,:

Le proto de la fonction :

int imagedestroy ( resource image )

imagedestroy libère toute la mémoire associée à l'image image . image est un identifiant d'image valide retourné par imagecreate .

Donc je pense qu'il faut faire :

imagedestroy($im);

Ceci ne résoud pas ton problème d'upload de la miniature, mais là je ne vois pas pour l'instant...
0
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
3 juin 2004 à 06:38
Re-salut,

J'ai une piste !

Dans le cas du jpeg, si tu utilises ces deux lignes à la place des tiennes , cela marche !!!!

$im = @ImageCreate ($l, $h) or die ("Erreur lors de la création de l'image");
ImageCopyResized($im,$src, 0, 0, 0, 0, $l,$h, $width, $height);//


au lieu de ton code:

$im = @ImageCreateTrueColor ($l, $h) or die ("Erreur lors de la création de l'image");//cree une image vide en vraie couleur de la taille de la miniature 
ImageCopyResampled($im,$src, 0, 0, 0, 0, $l,$h, $width, $height);//


Mais qu'est-ce que cela veut dire ?

Bon sang mais c'est bien sur, c'est le niveau de la librairie GD qui n'est pas adapté à tes instructions ....
Tu peux controler le niveau de GD installé avec phpinfo()

Ensuite tu vas dans la doc et tu cherches la compatibilité des fonctions utilisées avec le niveau de librairie GD dont tu disposes. Attention en dev et en prod, cela peut ne pas être le même niveau....

Bon courage...
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
3 juin 2004 à 12:22
C cool merci a toi je vais essayer direct merci !!
0
Rejoignez-nous