Page 1 sur 3

Affichage image aléatoire à partir d'un dossier

Posté : 26 avr. 2005, 16:16
par flitox
Comme j'ai vu que pas mal de monde avait du mal avec les fonctions de recherche dans un dossier, je me suis décidé à poster un morceau de script que je viens de finir et qui a pour but d'afficher une image aléatoire à partir d'un dossier quelconque.
<?php
	########################################
	#
	# Affichage image aléatoire //manucci.info
	#
	########################################

	//On indique le dossier images
	$chem_img = "./images";
	//On ouvre le dossier images
	$handle  = opendir($chem_img);
	
	//On parcoure chaque élément du dossier
	while ($file = readdir($handle))
		{
			//Si les fichiers sont des images
			if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file))
				{
					$listef[] = $file;
				}
		}
	
	$random_img = rand(0, count($listef)-1); //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouvées.
	
	//On calcule la largeur et la hauteur de l'image aléatoire
	$size = getimagesize($chem_img."/".$listef[$random_img]);
	
	//Largeur maximale de l'image pour la création des miniatures
	$largeur_maxi = 180;
	//Si la largeur dépasse la limite autorisée...
	if ($size[0] > $largeur_maxi)
		{
			//...la nouvelle largeur est égale à la limite à ne pas dépasser
			$width = $largeur_maxi;
			//La largeur d'origine divisée par la largeur limitée (on obtient un chiffre qui sert à faire la même proportion pour la hauteur)
			$theight = ($size[0]/$largeur_maxi);
			//La hauteur originale est divisée par le chiffre obtenu précédemment afin que l'image conserve les mêmes proportions que l'originale (mais en mode vignette)
			$height = ($size[1]/$theight);
		}
	else
		{
			//Sinon on garde la taille originale
			$width = $size[0]; $height = $size[1];
		}
	//On affiche l'image aléatoire (en respectant les standards ! :) )
	echo "<a href=\"".$chem_img."/".$listef[$random_img]."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef[$random_img]."\" alt=\"".$listef[$random_img]."\" /></a>";
	//On ferme le dossier
	closedir($handle);
?>
L'exemple est à consulter ici : http://www.manucci.info (menu de droite)

Posté : 27 avr. 2005, 14:38
par Gentoo Warrior
Ah ça, ça va bien me servir.

Merci flitox. :wink:

Posté : 27 avr. 2005, 18:46
par flitox
Si ça peut servir j'en suis ravi :D

Posté : 30 mai 2006, 12:43
par bouriquet59
Bonjour,
Le code pour générer les images aléatoirement marche "bien" mais j'ai tout de même de temps en temps ce message.

Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/117/sdb/3/d/usdathle/image_aleatoire.php on line 32

Est ce que quelqu'un pourrait m'aider car pour une fois que je trouve enfin ce que je voulais avec les images ce serait bête que ça ne fonctionne pas

merci à vous

Posté : 30 mai 2006, 14:07
par flitox
Bouriquet59, j'ai répondu à ton mail mais je vais quand même remettre la réponse ici pour les autres et corriger le problème dans le script :

Dans le script, j'avais écris ça :

Code : Tout sélectionner

if($file != '..' && $file !='.')
Or il se peut qu'un fichier Thumbs.db se soit glissé là pour peu que vous n'affichiez pas les fichiers cachés.

Donc on peut contrer ce problème en mettant ça (solution que je viens d'envoyer par mail à bouriquet59) :

Code : Tout sélectionner

if($file != '..' && $file !='.' && file !='Thumbs.db')
Ou encore beaucoup mieux :

Code : Tout sélectionner

if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file))

En effet ce dernier permet d'exclure de la recherche tout ce qui n'est pas une image.

image aléatoire à partir d'un dossier

Posté : 05 mars 2007, 00:03
par Pierre AP
Tout à fait ce que je recherchais et comme disait Ernesto Guevara «Soyons réalistes, demandons l'impossible.»

Mon impossible, c'est comment changer les images toutes les 3 secondes(ou 4, etc.) un peu comme un diaporama.
Quelles sont les ajouts à ce très bon code ?
amitiés,
Pierre AP

Posté : 08 mars 2007, 13:12
par thehawk
en mettant dans ton html :
<meta refresh=3>
ou un truc du genre ....

Posté : 08 mars 2007, 18:56
par Ultim4T0m
Ou bien en regardant un peu du côté du Javascript, qui pourrait rappeler le script php toutes les X secondes pour changer l'image peut-être.

Affichage image aléatoire à partir d'un dossier

Posté : 09 mars 2007, 21:23
par Pierre AP
Bonjour thehawk et Ultim4T0m,
Je vous remercie pour vos informations.

Pour <meta refresh=3>, je l'ai essayé avec les autres metas dans le head, pas un bon résultat avec moi. Et dans le html, pas de succès non plus.

Quant au Javascript, je n'en raffole pas trop. C'est peut-être pour cela que je n'en ai pas trouvé non plus.

Merci encore,

Pierre AP

Posté : 09 mars 2007, 21:57
par thehawk
essaye plutot : <META HTTP-EQUIV="Refresh" CONTENT="3"> qui plus W3C ^^

[Résolu]Affichage image aléatoire à partir d'un dossier

Posté : 09 mars 2007, 23:30
par Pierre AP
Eh bien mon ami thehawk,

Ça marche parfait !
Je crois que tu pourrais changer ta signature. Moi, je te trouve pas mal bon !!

Amitiés, Pierre AP

PS J'aime beaucoup ton site et je t'ai «emprunté» ton texte sur le «Che»
http://ppzx.net/diversche.php5

Je viens de m'apercevoir qu'on ne peut pas lire la fin... Bizarre, il ne faisait pas ça avant. Enfin, j'y vois.

Posté : 09 mars 2007, 23:46
par thehawk
Mais euh mon texte euh .... c'est pas bien grave ^^ et non je ne vois pas de probleme sur le texte (enfin sur mon site -_-)de toute facon je travaile sur une nouvelle version du site

[Résolu2]Affichage image aléatoire à partir d'un dossier

Posté : 10 mars 2007, 00:17
par Pierre AP
reBonjour thehawk,

Je voulais parler de ta signature ici, sur le post juste avant... ah ah ah !

N'empêche que je te remercie, car ça marche et c'est valide W3C:
<meta http-equiv="refresh" content="3" />

Pour mon site qui n'affichait pas tout, je crois que ça venait du «height» en mettant 100%, au lieu d'une mesure en pixels, ça a l'air d'aller.

Amitiés, Pierre AP

Posté : 24 mars 2007, 16:01
par gfranque
Bonjour,

merci pour ce super script
savez vous comment adapter ce script pour afficher des swf de meme taille et non des images ?

merci
Gfranque

[Résolu3]Affichage image aléatoire à partir d'un dossier

Posté : 24 mars 2007, 17:58
par Pierre AP
bonjour gfranque,

À ma connaissance, swf est plus rapide. Par contre, c'est un logiciel propriétaire et tu dois te relier à un URL extérieur à ton site, avec tous les dangers que cela peut comporter.

Voici ce que j'ai déjà utilisé quand je faisais mes choix :

Code : Tout sélectionner

<object type="application/x-shockwave-flash" data="http://www.estvideo.com/dew/media/dewplayer.swf?mp3=Mon_URL/mon_dossier/mon_fichier.mp3" width="200" height="20"> <param name="movie" value="http://www.estvideo.com/dew/media/dewplayer.swf?mp3=mon_dossier/mon_fichier.mp3" /> </object>
Danc ce cas-là je voulais faire tourner un mp3. Cela marche aussi avec un fichier swf. Il faut alors changer les dimensions (width="200" height="20").
Comme je suis débutant, je souhaite qu'un(e) plus expérimenté(e) vérifie ces informations.
Amitiés, Pierre AP