14-01-2009, 11:54 PM
La discussion sur le système de vêtements m'a donné envie de développer ce petit outil. Encore une fois, ce qui me motive c'est d'offrir la possibilité à un joueur de télécharger son perso.
Y a pas de front end par contre, autant le back-end je l'utiliserai probablement un jour, autant le front-end que j'utiliserai je sais pas à quoi il ressemblera.
Les partisans du server-side sont peu nombreux, mais je poste quand ma contrib, ça pourra toujours servir
1. Avant propos
===========
Le script utilise la librairie graphique ImageMagick et l'extension pecl Imagick. Vous devez les installer à tout prix pour que ça marche. Si certains ne peuvent pas le faire parce qu'ils sont sur du mutualisé mais veulent l'utiliser, je peux le refaire avec GD. Le script est très minimaliste et peu testé, voyez la une base, pas un truc fini.
2. Configuration
============
Pour le faire fonctionner, vous devez régler un certain nombre de choses. Tout d'abord, il vous faut vos images Ensuite, il faut que vous déterminiez les différents types d'images qui apparaitront sur votre perso : yeux, casque, armure, barbiche... Ainsi que leur position et leurs dimensions. Il vous faut un répertoire accessible en écriture pour le cache, et je crois que c'est tout. Vous pouvez aussi choisir le format de sortie ( le jpg est le plus rapide ), le taux de compression, les dimensions de vos éléments.
3. Exemple d'utilisation
===============
Vous retrouverez l'exemple dans l'archive :
Ce bout de script crée un perso, y ajoute des cheveux, des yeux et une bouche.Y a pas de front end par contre, autant le back-end je l'utiliserai probablement un jour, autant le front-end que j'utiliserai je sais pas à quoi il ressemblera.
Les partisans du server-side sont peu nombreux, mais je poste quand ma contrib, ça pourra toujours servir
1. Avant propos
===========
Le script utilise la librairie graphique ImageMagick et l'extension pecl Imagick. Vous devez les installer à tout prix pour que ça marche. Si certains ne peuvent pas le faire parce qu'ils sont sur du mutualisé mais veulent l'utiliser, je peux le refaire avec GD. Le script est très minimaliste et peu testé, voyez la une base, pas un truc fini.
2. Configuration
============
Pour le faire fonctionner, vous devez régler un certain nombre de choses. Tout d'abord, il vous faut vos images Ensuite, il faut que vous déterminiez les différents types d'images qui apparaitront sur votre perso : yeux, casque, armure, barbiche... Ainsi que leur position et leurs dimensions. Il vous faut un répertoire accessible en écriture pour le cache, et je crois que c'est tout. Vous pouvez aussi choisir le format de sortie ( le jpg est le plus rapide ), le taux de compression, les dimensions de vos éléments.
3. Exemple d'utilisation
===============
Vous retrouverez l'exemple dans l'archive :
Code PHP :
<?php
/*
* On instancie l'objet cache.
* 1er argument : temps de vie
* 2eme : répertoire
*/
$cache = new Perso_Cache('cache/', 3000);
/** config du perso */
$cfgPerso = array(
'imgFile' => 'images/perso.png',
'imgWidth' => 200,
'imgHeight' => 400,
'imgFormat' => 'jpg');
$perso = new Perso_Img($cfgPerso);
/** On définit quelles images on va lui ajouter */
$cheveux = new Caracteristique_Cheveux('images/cheveux1.png', 1);
$yeux = new Caracteristique_Yeux('images/yeux1.png', 2);
$bouche = new Caracteristique_Bouche('images/bouche1.png', 3);
/** on les ajoute */
$perso->add($cheveux);
$perso->add($yeux);
$perso->add($bouche);
/** nom du fichier cache */
$filename = implode('-', $perso->getItemsIdList());
if (false === $file = $cache->load($filename))
{
/** on enregistre le fichier via la classe perso */
$perso->save($cache->cacheDir.$filename);
/** et on récupère le contenu pour l'afficher */
$file = $perso->render();
}
/** on définit le content-type propres au format de l'image */
$perso->setHeaders();
/** On affiche l'image */
echo $file;
4. Notes
=========
Le système de cache a été développé à la va-vite. Si, comme Ruz, vous envisagez de stocker plusieurs centaines de milliers de fichiers, ce serait pas mal de le modifier pour qu'il gère des sous-répertoires.
Certains autres trucs ont été fait rapidos et n'ont pas été testés ( gitan que je suis )...
Niveau perf, je l'ai pas assez testé pour dire ce qu'il vaut, et surtout je n'ai aucune base pour faire des comparaisons. En tout cas, pour générer 100 images jpg, il m'a fallu 5.6 sec sur mon P4 au bureau.
Ne vous moquez pas de mon perso de test, j'ai pas la "fibre artistique" :p
Un jour, je serai amené à l'utiliser et donc à l'faire évoluer. Vos suggestions sont les bienvenues.
D'ores et déjà, je prévois d'ajouter la gestion du fond transparent ( actuellement on peut choisir la couleur de fond ), une meilleure gestion de l'ordre d'apparition / superposition des images, et un listing dynamique des images ( un listing de répertoire, ou BDD ).
5. Téléchargement
=============
Click !