librairie GD et redimenssionnemen d'image

ov3r
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 12:43

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 !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2006, 12:54

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

ov3r
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 13:30

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 ?

ov3r
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 16:11

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...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2006, 17:09

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() :)