PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 29-12-2009 04:59:08

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Preload d'images

Bonjour,

J'utilise
<?php list($width, $height, $type, $attr) = getimagesize("#FICHIER"); ?>
pour recuperer la taille de mes images
qui s'ouvriront dans des popups proportionnelle a leur image
lors d'un clic sur leur miniature.

Ces images etant "longues" a se charger lors du clic
je me demandais s'il n'existait pas un "preload" en PHP (comme il existe un getimagesize)qui me permettrait de faire
<?php list($width, $height, $type, $attr) = getimagesize("#FICHIER"); preload("#FICHIER"); ?>
Merci.

Reg3

Dernière modification par reg3 (29-12-2009 11:10:46)

Hors ligne

#2 29-12-2009 12:45:36

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Preload d'images

Pour avoir déjà travailler avec getimagesize j'ai trouvé la fonction super lourde et très longue d'exécution.
C'est une horreur pour une galerie (et ce n'était pas un problème d'hébergeur vu que j'étais en local).

Il existe des façons de redimensionner les images avec du css ou encore du javascript. Cela ne règle cependant pas le temps de chargement de l'image car cela ne modifie en rien son poids. Mais je trouve déjà le fait de ne pas utiliser la fonction PHP beaucoup mieux pour ma part.

Exemple css :

arnotw a écrit :

Salut à tous

C'est plus simple en CSS :

Demonstration :


<head>
  <style>
    .img { width: 200px;}
  </style>
</head>
<body>
  <img src="test.jpg" class="img">
</body>
 

De plus si tu veux faire un zoom sur ta photo, tu créé une class (comme .img) qui fait 500px (width: 500px;) et t'as juste à rappeler ta class (class="img") .

C'est beaucoup plus simple, plus facile à modifier, et ça répond aux normes du W3 (w3.org)

Exemple javascript :
http://www.javascriptfr.com/codes/REDIM … 39901.aspx

Hors ligne

#3 30-12-2009 02:39:53

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Re : Preload d'images

Merci xTG,

J'aurais bien voulu remplacer effectivement mes popup par du css,
mais toutes mes images (les grandes) sont de tailles differentes et je n'ai pas su trouver de script css correspondant a mes besoins:
taille ajustable en fonction de la taille de l'image avec un nom recupere dans mon #FICHIER, le tout automatiquement...

Je n'ai pas precise, mais cela a aussi son importance, que ma miniature n'appele pas la meme image agrandie mais une autre.

Ta reponse sous entend qu'il n'existe pas de solution en PHP, si j'ai bien compris...
Dommage.

Reg3

Hors ligne

#4 30-12-2009 09:08:04

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Preload d'images

S'il en existe une correcte je ne la connais pas.
Mais après mes propos sont à prendre à demi-mesure, car de nombreux scripts utilisent cette fonction...

Concernant ton precachage il me semble qu'il est possible de charger au fur et à mesure des images en javascript (sauf si mes souvenirs me jouent des tours).
Cela te permettrai d'afficher la page avant que les images soient chargées.

Hors ligne

#5 30-12-2009 11:09:39

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Re : Preload d'images

de nombreux scripts utilisent cette fonction

en PHP ou uniquement en JS?

Hors ligne

#6 30-12-2009 11:29:32

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Preload d'images

Hello,

Je ne suis pas sûr de bien comprendre ton problème.
Tu fais une pop-up dans laquelle tu affiches une image et cette image peut mettre un peu de temps à s'afficher.
Si c'est ça le problème ne peut être résolu en PHP pour la simple et bonne raison que PHP s'exécute coté serveur et non client.
Donc il te faut un langage coté client => Javascript.

Après pour une solution adaptée il me faudrait un peu plus de détails sur ta galerie :
- Combien d'image comporte une page de ta galerie ?
- Est ce que les grandes images liées aux miniatures ont une taille maximale ? si oui laquelle ?


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#7 31-12-2009 04:30:38

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Re : Preload d'images

Bonjour Maskine,

Je ne suis pas sûr de bien comprendre ton problème.
Tu fais une pop-up dans laquelle tu affiches une image et cette image peut mettre un peu de temps à s'afficher.
Si c'est ça le problème ne peut être résolu en PHP pour la simple et bonne raison que PHP s'exécute coté serveur et non client.
Donc il te faut un langage coté client => Javascript

Oui tu as bien saisi big_smile

Donc il faut que je passe par du JS...

Après pour une solution adaptée il me faudrait un peu plus de détails sur ta galerie

Sur mes pages j'affiche 6 miniatures (ou moins) qui correspondent a un resultat de recherche.
Exemple (mon site propose des livres) 'Simenon' renverra plusieurs pages de 6 miniatures
un autre auteur moins connu peut etre 2 miniatures
Ces miniatures toutes differentes (pas en taille) ouvriront des popups d'une 2eme image (pas celle des miniatures) qui ont toutes une taille differente recuperee par: <?php list($width, $height, $type, $attr) = getimagesize("#FICHIER"); ?>

En fait je voudrais que mon preload ne charge que les 6 images (ou moins) correspondant a la page affichee et non pas l'ensemble de mes images (#FICHIER)...
Et il faudrait que mes 2eme images soit appelees "de maniere generique" pas par un nom d'image (ex:simenon.jpg ou simenon.png)...

Merci.

Reg3

Hors ligne

#8 31-12-2009 10:41:10

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Preload d'images

Hello,

Ok maintenant je vois bien smile

Pour commencer, les grandes images, si elles dépassent le Mo il faut que tu les réduisent en taille pour l'affichage (quitte à proposer un lien pour télécharger l'image d'origine) tu gagneras en fluidité quant à l'utilisation de la galerie.
Ensuite, tu peux demander à ton navigateur de les précharger pour toi.
Pour se faire :
<img src='chemin de l'image' style="display: none;" />
Il me semble que le fait de mettre le tag HTML mais de le mettre en display none te permet de précharger l'image. => A vérifier

Enfin pour la pop-up, je te déconseille le bon vieux windows.open().
Oriente toi plus vers des framework JS qui vont s'occuper pour toi de gérer tous les problèmes Cross Browser et en plus qui vont te permettre de mettre en place des fonctionnalité un peu plus sympas.
Je pense notamment à jQuery qui à un plugin de dialog qui te permet des pseudos pop-up :
http://docs.jquery.com/Main_Page
Mais bon, je te propose ça parce que c'est celui que je connais le mieux smile

Bon courage


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#9 31-12-2009 11:11:15

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Re : Preload d'images

Merci Maskine, je vais creuser les pistes que tu m'as indique, et te tiendrais au courant big_smile

Hors ligne

#10 01-01-2010 10:45:58

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Re : Preload d'images

Bonjour Maskine,

Le: style"display:none" fait exactement ce dont j'avais besoin big_smile

Pour le lien Jquery, il y a en fait des choses plutot compliquees comme
http://yensdesign.com/2008/09/how-to-cr … ng-jquery/
et 1 tres simple
http://rip747.github.com/popupwindow/
mais qui ne differt que peu me semble t'il d'une popup classique.

A quelle pseudo popup pensais tu?
Merci.

Reg3

Dernière modification par reg3 (01-01-2010 10:46:46)

Hors ligne

#11 04-01-2010 09:35:23

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Preload d'images

Hello,

Je pensais en fait à ça :
http://jqueryui.com/demos/dialog/

Ca te permet de faire un affichage style pop-up, qui n'en n'est pas une => tu n'as pas de blocage navigateur.


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#12 07-01-2010 05:51:42

reg3
Membre
Inscription : 05-11-2009
Messages : 9
Site Web

Re : Preload d'images

Bonjour Maskine,

Effectivement ca a l'air plutot sympa et personnalisable big_smile
mais je n'ai pas l'impression que l'ajustement automatique, en fonction de la taille de mes photos, toutes de tailles differentes, soit possible sad
Merci.

Reg3

Hors ligne

Pied de page des forums