OVH Cloud OVH Cloud

Php et la librairie GD

3 réponses
Avatar
Matt V.
Bonsoir à tous,

Voilà mon petit souci en php.
J'ai des images dans un répertoire donné et je voudrais que mon script
php en parcourt les fichiers (images en jpg) et affiche un "album" de
vignettes avec, si on clique sur une vignette, l'affichage de la photo
originale. Pour celà, j'utilise, ou plutôt je tente d'utiliser la
librairie gd.
Voici la partie qui concerne la création des vignettes et des liens
associés:

/* Creation du thumb */
$image = ImageCreateFromJPEG($image_reelle);
$width = imagesx($image) ;
$height = imagesy($image) ;
$new_width = 100; // largeur a definir
$new_height = ($new_width * $height) / $width ; // hauteur proportionnelle

$thumb = ImageCreateTrueColor($new_width, $new_height);
imagecopyresized($thumb, $image, 0, 0, 0, 0, $new_width, $new_height,
$width, $height);
/* Création du lien ici mais comment faire ? */

Voilà, je n'arrive pas à afficher les vignettes avec les liens
"en-dessous". Est-ce que quelqu'un aurait une idée SVP ?
De plus, j'ai essayé d'ajouter la ligne suivante:
imagejpeg($thumb, "$thumb_file",100);
et d'ajouter un simple <A HREF...> avec comme image source, $thumb_file,
ça marche mais l'image est d'une qualité affreuse, le serveur, pendant
la création de l'album de vignettes, n'a plus du tout d'IDLE, autrement
dit, elle est au tas et je n'ai pas envie d'écrire sur le disque mais de
gérer les vignettes en "mémoire" et qu'elles soient supprimées à la fin
du script. Est-ce possible ?

D'avance, merci pour votre aide.

A+
Binerf

3 réponses

Avatar
Jean-Marc Molina
Faut générer des miniatures une fois pour toute, pas à chaque fois ^^.
Sinon pour afficher une image : <img>, <a href> sert juste à transformer
l'image en hyperlien.

JM

ps : cherche « galerie d'images » sur les archives Google du newsgroup pour
retrouver l'un de mes messages et le code source.

--
Europe > France > Lyon
Clé anti-pourriel : « PASUNPOURRIEL » (doit apparaître dans le sujet ou le
corps de votre message si vous me répondez personnellement)
Avatar
P'tit Marcel
"Matt V." écrivit
news:bu70no$jr8$:

J'ai des images dans un répertoire donné et je voudrais que mon script
php en parcourt les fichiers (images en jpg) et affiche un "album" de
vignettes avec, si on clique sur une vignette, l'affichage de la photo
originale. Pour celà, j'utilise, ou plutôt je tente d'utiliser la
librairie gd.

Voilà, je n'arrive pas à afficher les vignettes avec les liens
"en-dessous". Est-ce que quelqu'un aurait une idée SVP ?

j'ai essayé d'ajouter la ligne suivante:
imagejpeg($thumb, "$thumb_file",100);
et d'ajouter un simple <A HREF...> avec comme image source,
$thumb_file, ça marche


à mon avis, c'est même le seul moyen d'afficher plus que l'image, par
exemple un lien.


mais l'image est d'une qualité affreuse,


essaye imagecopyresampled si tu as GD version 2 ou +
sinon tu peux utiliser directement la bibliothèque libjpeg :
http://www.nexen.net/scripts/details.php?scripts`7


le serveur, pendant la création de l'album de vignettes, n'a plus du tout
d'IDLE, autrement dit, elle est au tas et je n'ai pas envie d'écrire
sur le disque mais de gérer les vignettes en "mémoire" et qu'elles
soient supprimées à la fin du script. Est-ce possible ?


C'est possible mais idiot. Pourquoi faire calculer dix fois la même chose
au lieu de le faire une fois pour toutes ? Le temps CPU (et l'attente de
l'internaute) coûte beaucoup plus cher que l'espace disque.

Avatar
[ psykokwak ]
et si on realisé ca en 2 fichiers?
1 pour creer la liste d'image a afficher ainsi que les liens vers les images

et un autre pour creer les miniatures?

deja on ne serai plus limité par le max time execution machin chouette, et
chaque creation de vignette est independante du reste!

pour exemple voir : http://jcjcjcjc.free.fr/server/showtn.php?last=temp



je ne copy pas le code source des 2 fichier ici car ils sont trop gros!
mais tu peux les telecharger ici :
http://jcjcjcjc.free.fr/server/explorer.zip
(fichier showtn.php pour la creation de la liste dimage a creer et tn.php
pour creer chaque vignette independament)