Vignettes

Eléphant du PHP | 330 Messages

10 avr. 2006, 14:11

Bonjour,

Dans ma galerie photo, j'ai des vignettes qui lorsque l'on clique dessus donne la photo agrandie.

Pour l'instant j'utilise pour la vignette la photo normale dont je réduis les dimensions.

Le problème est que je ne tiens pas compte du format de la photo (paysage et portrait)

Y a t-il un moyen (en PHP) de récupérer la largeur et la longueur de la photo .

Ou ne vaux t-il pas mieux créer des vignettes dans ma base au bon format ce qui est plus lourd

Merci d'avance

ViPHP
ViPHP | 656 Messages

10 avr. 2006, 14:13

Pour les dimensions c'est possible via la librairie GD. Voir la doc PHP :

http://fr3.php.net/manual/en/function.imagesx.php
http://fr3.php.net/manual/en/function.imagesy.php

Eléphant du PHP | 330 Messages

10 avr. 2006, 14:20

Merci pour la rapidité de la réponse

Je ne vois pas comment l'affecter à mon image sélectionnée

<a href="themes.php"><img src="/Photos/Index_01.JPG" >

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 avr. 2006, 14:21

Je te conseille de stocker sur ton serveur une version "normale" de la photo et une version vignette.

Pour la simple raison que, si tu envoi la photo "normale" au navigateur, tu va allourdir considérablement la taille de la page ... une photo normale redimensionnée en HTML est du même poid qu'une photo normale affichée dans sa taille d'origine

Mais comme le dit Ultiny, la librairie GD te permet beaucoup de choses sur les images ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Dux
Eléphant du PHP | 127 Messages

10 avr. 2006, 15:58

Salut,
tu peux aussi utiliser getimagesize

list( $larg, $haut, $type ) = getimagesize( "url_de_ton_image" );

$larg = largeur image
$haut = hauteur image
$type= type ( 1 = gif, 2 = jpeg, 3 = png)

Ensuite, ne t'embête pas à mettre des vignettes dans ta BDD, mets les dans un dossier simplement.

Ou si tu n'a pas trop de visiteurs en même temps, tu peux créer des vignettes dynamiquement. Elles n'existeront physiquement que en RAM serveur et apparaitront sur le navigateur client.

Pour celà tu dois te renseigner sur header (type de fichier);
et sur imagecreatefromjpeg
imagecreatefromgif
imagecreatefrompng

(niveau : très facile )

Eléphant du PHP | 330 Messages

10 avr. 2006, 18:03

Merci

J'ai utilisé getimagesize mais il me met 0 aux 3
<?php

list( $larg, $haut, $type ) = getimagesize( "/Photos/Index_01.JPG" ); 

echo "($larg)";
echo "($haut)";
echo "($type)";
			

?> 

Dux
Eléphant du PHP | 127 Messages

10 avr. 2006, 18:10

Vérifie le chemin ou essaye d'utiliser un chemin relatif plutot que de le commencer par / (racine), du genre "../Photos/Index_01.JPG"

Pour vérifier si il y a erreur dans l'accès au fichier:

if ( ( list( $larg, $haut, $type ) = getimagesize(chemin) ) == FALSE ) echo 'Pas d\'accès au fichier';

Eléphant du PHP | 330 Messages

10 avr. 2006, 18:54

Effecivement il y a un problème de chemin que ce soit avec /Photos ou
../Photos

CPourtant ce chemin marche quand j'affiche l'image :

<a href="themes.php"><img src="/Photos/Index_01.JPG" >

Cela marche avec le chemin "Index_01.JPG"