Page 1 sur 1

Modifier la taille d'une image avec un formulaire

Posté : 09 avr. 2008, 11:33
par HeadQuaker
Bonjour,

Voici mon problème :

J'ai une page en php sur laquelle l'utilisateur upload une image (format jpeg) sur le serveur et ensuite cette image s'afficher dans un cadre.

Ce que je voudrai c'est qu'avec l'aide d'un formulaire (champs input type text), l'utilisateur puisse changer la taille de l'image(hauteur et largeur).

J'ai mon formulaire et mon image(dans un dossier sur le serveur) mais je ne vois pas comment attribuer la nouvelle taille à l'image.

Merci de m'aider à comprendre!

Posté : 09 avr. 2008, 11:37
par steph29
regarde du cote de imagecreatefromjpeg, imagecopyresampled, imagejpeg (fonctions php)

Posté : 09 avr. 2008, 11:49
par HeadQuaker
j'ai déjà regardé pour imagecopyresampled j'ai cette erreur :

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\Documents and Settings\jmochica\Mes documents\Customz\index2.php on line 73

Voici la ligne :

ImageCopyResampled($fichierdiff, $fichierdiff, 0, 0, 0, 0, $_POST['largeur'], $_POST['hauteur'], 512, 512);

(J'ai mis 512 par defaut de la taille de mes images pour l'instant)

$fichierdiff représente : ./upload/Coca-cola_texture2.jpg

Posté : 09 avr. 2008, 11:52
par steph29
tu as le reste du code?

utilise tu imagecreatefromjpeg avant?

Posté : 09 avr. 2008, 12:04
par HeadQuaker
non en fait j'ai un formulaire qui upload une image sur le serv dans un dossier /upload/

J'utilise copy() seulement car je dois aussi upload un autre fichier sur le serveur.
en fait j'ai un formulaire qui sert à upload 2 types de fichiers : un PDF et une image au format jpg.
Ensuite chacun de ces fichiers est affiché dans un cadre différent de la page (<div> + css...)
Enfin il doit etre possible de modifier la taille de l'image selon son bon vouloir afin de l'adapter au PDF...je n'entre pas dans le detail du pourquoi car c'est pour une société.

Tout fonctionne sauf le redimenssionnement de l'image :

Voici le code du formulaire :

Code : Tout sélectionner

<!-- Classe HTML permet de modifier la taille de l'image --> <div class="modif_image"> <form name="modifier_diffuse" enctype="multipart/form-data" method="post" action="./index2.php"> Largeur : <input type="text" name="largeur"><br /> Hauteur : <input type="text" name="hauteur"><br /> <input type='hidden' name='fichierdiff' value=<?php echo $fichierdiff; ?> > <input type="submit" value="Envoyer"> </form> </div> <?php ImageCopyResampled($fichierdiff,$fichierdiff,0, 0, 0, 0, $_POST['largeur'], $_POST['hauteur'], 512, 512); ?>
$fichierdiff eszt une variable que je dois garder après le refresh de la page.

PS je précise que la société c'est pas coca-cola :p
PS2 (pas la console) : je précise aussi que le fichier s'appelle index2.php...

Posté : 09 avr. 2008, 14:00
par steph29
si tu as lu la doc de imagecopyresampled (http://fr.php.net/manual/fr/function.im ... ampled.php)
src_im : Lien vers la ressource de l'image source

et ton message d'erreur est la :"supplied argument is not a valid Image resource in"

ce lien est genere a partir des fonctions imagecreatefromjpeg (ou encore imagecreatetruecolor)

Code : Tout sélectionner

imagecreatefromjpeg() retourne un identifiant d'image représentant une image obtenue à partir du fichier filename .
donc ma reponse n'etait pas anodine ;)
pour l'utilisation de imagecopyresampled il y a plein d'exemple dans la doc (mais je ne pense pas que tu y ai jeter un oeil)

EDIT: Youpee je suis passé maitre du phpinfo() :twisted:

Posté : 09 avr. 2008, 14:58
par HeadQuaker
si j'ai déjà testé tout ça mais j'ai toujours la même erreur -_-
c'est si compliqué de changer les dimensions d'une image qui a été uploadée? -_-

Posté : 09 avr. 2008, 15:15
par steph29
ben non:
//image source
$src_img = imagecreatefromjpeg($fichierdiff);
$dst_img = imagecreatetruecolor($_POST['largeur'],$_POST['hauteur']);

//la ta commande
ImageCopyResampled($dst_img,$src_img,0, 0, 0, 0, $_POST['largeur'], $_POST['hauteur'], 512, 512);
//on copie la nouvelle image (remplacée ici)
imagejpeg($dst_img, $fichierdiff, $image_quality=80);

//on supprime les images temporaires
imagedestroy($src_img); 
imagedestroy($dst_img);

Posté : 09 avr. 2008, 15:31
par HeadQuaker
Merci !

Même si j'ai un carré noir à la place de l'image.... mais bon ca doit venir d'autre part!

:p

Par contre y a t'il un moyen de ne pas remplacer l'image précédente?
De plus ce code fonctionne t il avec du pjpeg?

Merci!