Précharger toutes les images d'un répertoire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 256 fois - Téléchargée 27 fois

Contenu du snippet

Cette fonction permet par exemple de précharger toutes les images d'un site (boutons, survols, etc...), pour peu que toutes ces images soient dans un même répertoire.

Il s'agit tout simplement de parcourir le répertoire, et d'extraire les noms des fichiers image afin des les précharger à l'aide des CSS et de la propriété display:none.

La fonction attend en paramètre le chemin (absolu ou relatif) du répertoire, par exemple : preload("images/boutons/");

Source / Exemple :


<?php
function preload($rep)
{
  chdir("$rep");
  $dossier=getcwd();
  //Compatibilité path Unix et windows
  if (strpos($dossier,"\\")) {$dossier.="\\";}
  else {$dossier.="/";} 

  if ($handle = @opendir($dossier))
  {
   //boucle de parcours de tous les éléments du répertoire
   while (($file = @readdir($handle)) !== false)  
   {
       if (@getimagesize("$rep/$file")) //renvoi FAUX si le fichier n'est pas une image
       { $img[] = "<img src='$rep/$file' style='display:none;' alt='' />\n"; }
   }
  }
  @closedir($handle);
  return $img;
}?>

Appel : <?php $tabImg=preload("img"); ?>
Puis, <?php foreach($tabImg as $i) echo $i; ?>

Conclusion :


Le preload en CSS est inspiré de ce très bon site : http://www.alsacreations.com/articles/preload/

...Petite correction suggérée, à juste titre, par R@f ;o)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
24 juin 2009

En faite c'est bon, j'ai trouvé une autre solution en Java-script :

//Préchargement des "images halo".
i0 = new Image();
i0.src = "imagesBureau/bureauOriginal.jpg";

i1 = new Image();
i1.src = "imagesBureau/formationsHalo.jpg";

i2 = ...
Tout bete, et ca marche tres bien ! ^^

Merci quand meme.
Messages postés
2
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
24 juin 2009

Bonjour.

Alors voila:(Je débute en html/php) J'ai une image et dessus j'ai positionné plusieurs cadres de lien (sur les differents objets de l'image) lorsque l'on passe la souris sur un de ces cadres lien, une nouvelle image viens prendre la place de la premiere.

Je fais ca avec du Java-script :

function menu(val)
{
if(val=='contacts')
{
y = document.getElementById('encartimage').className='contacts';
}
else if(val=='none')
{
y = document.getElementById('encartimage').className='encarimage';
}
}
(il y a plusieurs if() normalement, c'est juste pour montrer le fonctionnement)

Les liens vers les images sont dans mon fichier css.

Mon probleme:
Lorsque je passe sur le cadre lien, la nouvelle image remplace bien comme il faut l'ancienne, mais il y a un temps de chargement, du coup j'ai un flash blanc, puis la nouvelle image s'affiche... autant sous firefox que sous IE (l'avantage de firefox c'est qu'il ne charge l'image qu'une seul fois.).

J'ai intergré la fonction preload dans mon code avec un include :

<?php
include ('prechargement.php'); //dans le meme répertoire que mon index.php
$rep=('imagesBureau/');
preload($rep);
?>

Je place ceci avant ma balise <html>

Je lance ca en local, mais aucun changement j'ai toujours les flashs blancs :s

Quelqu'un a une idée ?
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Le mieux, pour avancer un peu tout seul, c'est d'essayer !

-> oui, tu mets le script dans ta page d'accueil
-> rien à modifier dans la fonction
- Comme indiqué dans la description du code « La fonction attend en paramètre le chemin (absolu ou relatif) du répertoire, par exemple : preload("images/boutons/"); » Donc "img" c'est le nom du répertoire.
Messages postés
2
Date d'inscription
samedi 2 février 2008
Statut
Membre
Dernière intervention
6 février 2008

Bonjour Arnal69130
Mon probléme, je résume.
1 ) Je copie tout le script dans ma page d'aceuil oui ou non ?
2 ) Dans le script il y a 24 lignes, laquel je modifi ?
3 ) Quel n° de ligne et par quoi ?
4 ) Faut-il renommé tout mes images en "img" ? sacahant que j'ai: exemple = voitures.jpg, figurines.jeg ect.. environ 380 images
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Bonjour Bloxan56x2,
Le script a été mis à jour au fur et à mesure que des commentaires ont été postés. Il fonctionne tel quel.
Quel est ton problème ? As-tu un message d'erreur ?
Afficher les 20 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.