14-08-2009, 12:00 AM
Ben, le concept c'est de capturer ce qui va être affiché par le serveur lorsque tu fais ton imagejpeg(). L'enregistrement dans un fichier (en utilisant imagejpeg) est super lourd et inutile, il suffit d'utiliser un code de ce genre :
Code PHP :
<?php
// D'abord tu envoies les headers voulus, ça c'est la base
header('Content-type: image/jpeg');
// Ensuite tu testes si le cache existe
$cacheID = md5(serialize($_REQUEST) . serialize($_SESSION));
$cache = new cached;
if($cache->exist($cacheID)) // Ce n'est qu'un exemple de classe hein bien sûr
{
// Le cache existe : on s'en sert
echo $cache->getCachedData($cacheID);
// Et on quitte
die();
}
// Si on est ici le cache n'existe pas, on créé notre image
$im = imagecreatetruecolor(120, 120);
/*
* Bla bla bla tu génères ton image
*/
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'Bla bla bla', $text_color);
// Tu prépares le buffer
ob_start();
// Tu affiches ton image
imagejpeg($im);
// Et tu récupère ce qu'elle contient
$content = ob_get_flush();
// Ensuite c'est tout simple : tu l'enregistre
$cache->saveData($cacheID, $content);
// Et tu l'affiches
echo $content;
// Et voila, c'est fini :)