Réponse acceptée !
voilà comme promis!!
<?
if(!isset($_GET["im"])){die("Pas assez de parametres!");}
// regroupe toutes les variables à chercher dans la requète c'est plus lisible!
$image = urldecode($_GET["im"]);
$w = urldecode($_GET["w"]);
$h = urldecode($_GET["h"]);
// regroupe les autres variables de configuration!
$defaut_largeur_max = 165; // définition de largeur max des miniatures
$defaut_hauteur_max = 132; // définition de hauteur max des miniatures
$dossier_images = "dossier"; // Dossier dans lequel doivent être toutes les image!
$dossier_cache = "/cache"; // Dossier dans lequel se trouve le cache (attention! créé dans $dossier_images!)
// ------------------------------------------------------------------------------------------
$chemin_image = $dossier_images.'/'.$image;
$chemin_cache = $dossier_images.$dossier_cache;
// ------------------------------------------------------------------------------------------
// ---------------------------- LE MECANISME DE CACHE ---------------------------------------
if(!is_dir($chemin_cache)){mkdir($chemin_cache);} // Si jamais $dossier_images/cache/ n'est pas créé, on créé
if(file_exists($chemin_cache."/".$image)){
header("Content-type: image/jpeg"); // définir le type-mime correctement!
$cached_img = imagecreatefromjpeg($chemin_cache."/".$image) or die ("Erreur lors du chargement depuis cache"); // Charger
imagejpeg($cached_img, null, 90); // Envoyer vers le navigateur!
die(); // et puis arrêter le script!
// ---------------------------- ET SINON :) -------------------------------------------------
}else{
$size_im = getimagesize($chemin_image);
if(isset($_GET["w"]) && ($w+0)) $largeur_max = $w; else $largeur_max = $defaut_largeur_max;
if(isset($_GET["h"]) && ($h+0)) $hauteur_max = $h; else $hauteur_max = $defaut_hauteur_max;
if(($size_im[0] >= $size_im[1]) && ($size_im[0] > $largeur_max)){
$largeur=$largeur_max;
$hauteur=ceil(($largeur/$size_im[0])*$size_im[1]);
} elseif(($size_im[1]>=$size_im[0]) && ($size_im[1]>$hauteur_max)) {
$hauteur=$hauteur_max;
$largeur=ceil(($hauteur/$size_im[1])*$size_im[0]);
} else {
$largeur=$size_im[0];
$hauteur=$size_im[1];
}
header("Content-Type: image/jpeg");
$img_in = imagecreatefromjpeg($chemin_image);
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
imagejpeg($img_out, $chemin_cache."/".$image, 80); // ça c'est pour créer l'image dans le cache!
imagejpeg($img_out, null, 80); // là tu fais la sortie normale
}
?>
juste deux trois petits conseil:
- document ton script!!! quand t'est entrain de programmer tu sais ce que tu fais! mais de te comprendre après 2-3 ans c'est difficle!! et je sais de quoi je parle!
- laisse un peu d'air dans tes scripts!! laisse des espaces, de lignes vides etc! ça augmente la lisibilité et ça ne change quasiment rien au temsp d'exécution de ton script!
- je l'ai déjà dit dans mon post précédent! pour TOUTES les variables à récupèrer dans l'URL de ton script utilise urldecode($_GET["variable"]); comme ça tu t'évite des problèmes de compatibilité avec les configurations de serveur!!
Vala!! j'espère que t'a apris quelquechose!!!

Bonne chance pour la suite!