JeuWeb - Crée ton jeu par navigateur
Générer les images ou les enregistrer ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Générer les images ou les enregistrer ? (/showthread.php?tid=4293)



Générer les images ou les enregistrer ? - kilhom - 30-10-2010

Bonjour à tous !

Voici mon problème :
Dans mon jeu les joueurs vont pouvoir modifier l'image de leur personnage en fonction de leurs équipements.
Chaque personnage aura une image de son joueur tourné vers la droite et une autre vers la gauche (un simple flip horizontale).

J'aimerais savoir si il est plus intéressant d'enregistrer les images dans un dossier après les avoir générés grâce à php ou bien si il est préférable de les générer à chaque fois qu'elles sont demandés et de ne pas les enregistrer.

Je pense que générer à chaque fois doit couter pas mal de ressources pour le serveur mais les enregistrer doit demander beaucoup d'espace de stockage.
Quand à savoir qu'elle est la meilleure solution... je doute !

Voila voila, merci d'avance Smile


RE: Générer les images ou les enregistrer ? - php_addict - 30-10-2010

salut

effectivement les générer à chaque fois est une mauvaise idée...

mais tu peut allier les 2 avec un système de cache: si l'image n'a pas été modifié tu charge celle en cache, sinon tu en recréée une

par contre si tu opte pour cette solution tu va avoir un gros soucis: celui du cache du navigateur...si par exemple IMAGE.JPG est modifiée et que ce fichier est dans ton cache navigateur alors on verra afficher l'ancienne image...il y a moyen de dire au navigateur un truc du genre "must revalidate" avec les header HTTP
sinon la solution est d'utiliser un autre nom pour ton fichier image et de l'enregistrer en Base de donnée

ce n'est qu'un avis, il y a peut etre mieux comme solution, d'autres membres en auront peut etre une meilleur...

re-edit : PS: si tu opte pour un systeme de cache, ne le met en place que quand tout ton script est ok, sinon c'est l'enfer
a+


RE: Générer les images ou les enregistrer ? - niahoo - 30-10-2010

je suis d'accord, générer à chaque fois la même chose est inutile. il faut simplement écraser l'image avec une nouvelle quand le portrait est modifié.

ensuite, pour forcer le navigateur à la recharger :

D'abord, apache renvoie une réponse NOT MODIFIED si l'image est inchangée depuis la dernière visite. je ne sais pas sur quoi il se base et j'ai la flemme de vérifier mais je suppose que le navigateur envoie sa date de cache quand il requête l'image.

Sinon, voilà le trick:

Supposons que $date_modif contient la date de dernière modification. Pour afficher l'image, il te suffit d'inclure cette date dans l'URL de l'image (au mieux en timestamp) et comme ça le navigateur se trouvera devant une nouvelle URL si l'image est modifiée, et la rechargera.


<?php
echo '<img src="url de l\`avatar.jpg?'.$data_modif.'"/>';



RE: Générer les images ou les enregistrer ? - kilhom - 30-10-2010

Je vois je vois, c'est donc bien ce que je me disais !
Merci à vous deux Smile


RE: Générer les images ou les enregistrer ? - Gwym - 31-10-2010

On doit pouvoir utiliser le header :
header("Last-Modified: " . gmdate("D, d M Y H:iConfused") . " GMT");

"Si vous avez un en-tête "Last-Modified" dans vos pages, lors du prochain chargement de votre site Web par le même visiteur, le serveur vérifie s'il y a un changement dans les fichiers depuis la dernière fois qu'ils ont été consultés.
Si aucun changement n'est apporté, le serveur envoie un "304 Not Modified" réponse au navigateur et l'information sera chargée à partir du cache local."

Sinon, pour obtenir un mirroir des images sans aucun coût pour le serveur, j'utilise le css. C'est du css3, mais c'est déjà bien supporté et il y a un filtre pour IE...

.flip {
-moz-transform: scaleX(-1); /* Gecko */
-o-transform: scaleX(-1); /* Opera */
-webkit-transform: scaleX(-1); /* webkit */
transform: scaleX(-1); /* standard */
filter: FlipH; /* IE 6/7/8 */
}



RE: Générer les images ou les enregistrer ? - kilhom - 31-10-2010

Ah niquel le flip ! Tu viens de me faire économiser pas mal de temps et d'espace !
Et merci aussi pour le header, c'est parfait Wink