Page 1 sur 1

librairie GD et redimenssionnemen d'image

Posté : 19 avr. 2006, 12:43
par ov3r
Salut à tous,
j'essai vainement depuis une semaine de traiter une image au préalable uploader sur le serveur.

Voici mon code pour réduire l'image :

$im = ImageCreateTrueColor(100, 150) ;
$image = "upload/image.jpg" ;
imagecopyresampled($im, $image, 0, 0, 0, 0, 100, 150, 200, 300) ;

$miniature = "mini_$fichierSource";
ImageJpeg ($im, $miniature);
echo "Image miniature générée: $miniature";

Ca n'est pas le code finale, j'ai juste testé celui la pour voir si ca marchait, ca n'est pas le cas...

Un dossier upload contenant le fichier image.jpg est sur mon serveur


Merci de m'aider et de ne pas me réenvoyer vers un tutorial, j'en ai fais pas mal jusqu'à présent !!

Posté : 19 avr. 2006, 12:54
par Ryle
Le deuxième paramètre de la fonction imagecopyresampled() (tout comme le premier) n'est pas le chemin de l'image, mais un objet de type Ressource. Il te faut donc utiliser un createImageFromJpeg (ou gif, ou png, etc.) pour l'obtenir :)

Sans aller sur les tutoriaux, les exemples et les commentaires donnés sous la description de la fonction sur php.net devraient pas mal te guider

Posté : 19 avr. 2006, 13:30
par ov3r
Avant tout merci de m'aider !!

j'ai changé mon code :

$im = ImageCreateTrueColor(100, 150) ;
$fichierSource = "image.jpg" ;
$source = ImageCreateFromJpeg($fichierSource);
imagecopyresampled($im, $source, 0, 0, 0, 0, 100, 150, 200, 300) ;

$miniature = "mini_$fichierSource";
ImageJpeg ($im, $miniature);
echo "Image miniature générée: $miniature";

Je ne comprends pas le sens de cette ligne :
ImageJpeg ($im, $miniature);

Qu'est ce qui copie mon image miniature sous mini_image.jpg ??
Dans ce cas, je suis dans le dossier source, si je veux mettre dans un dossier upload je dois le mettre ou ?

Posté : 19 avr. 2006, 16:11
par ov3r
Il semblerai que quand je change le code comme ceci :
$dest_dossier = 'photo/upload/';
$miniature = "photo/upload/mini_$fichierSource";

l'image miniature est un cadre noire.

Comment ca se fait ???

je veux juste mettre mes deux image dans le meme dossier, mais pas celui d'origine...

Posté : 19 avr. 2006, 17:09
par Ryle
ImageJpeg ($im, $miniature); 
C'est le code qui va générer physiquement ton image sur le serveur. Il prend en paramètre le flux (ou Ressource) que tu as préparé, et le nom de l'image (avec éventuellement le chemin à partir du script il me semble). Si tu ne lui donne pas de nom, alors l'image ne sera pas stocké et seul le flux sera renvoyé (ce qui peut être très interessant pour des graph ou des images dynamiques)

Quant à déplacer les images, tu peux le faire ensuite avec la fonction rename() :)