Upload d'img avec resize

Signaler
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005
-
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005
-
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>
A voir également:

4 réponses

Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

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.
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004

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...
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004

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...
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

C cool merci a toi je vais essayer direct merci !!