De nombreuses fonctions de manipulation des images sont disponibles en PHP... Nous allons nous intéresser ici au redimensionnement et à la création "à la volée" d'images réduites. J'en ai eu besoin dans le cadre du développement d'une galerie d'Art et j'ai dû chercher ailleurs les infos, alors... :)
Pour changer la taille d'affichage d'une image en HTML, il suffit d'utiliser les options WIDTH et HEIGHT de la balise IMG :
<IMG SRC="monimage.jpg" WIDTH=100 HEIGHT=50>
et pour redimensionner l'image en gardant les proportions de départ, il suffit de ne préciser qu'un seul des deux paramètres, votre navigateur se chargeant de calculer le deuxième.
Oui mais alors comment faire pour déterminer les dimensions à utiliser pour que l'image tienne au mieux dans une zone de XX sur YY ? HTML ne suffit plus... Aurélien vous a donné précédemment la solution en Javascript et en ASP, voyons donc la solution en PHP :
<? function redimage($img_src,$dst_w,$dst_h) { // Lit les dimensions de l'image $size = GetImageSize($img_src); $src_w = $size[0]; $src_h = $size[1]; // Teste les dimensions tenant dans la zone $test_h = round(($dst_w / $src_w) * $src_h); $test_w = round(($dst_h / $src_h) * $src_w); // Si Height final non précisé (0) if(!$dst_h) $dst_h = $test_h; // Sinon si Width final non précisé (0) elseif(!$dst_w) $dst_w = $test_w; // Sinon teste quel redimensionnement tient dans la zone elseif($test_h>$dst_h) $dst_w = $test_w; else $dst_h = $test_h;
// Affiche les dimensions optimales echo "WIDTH=".$dst_w." HEIGHT=".$dst_h; } ?>