8791 sujets

Développement web côté serveur, CMS

bonjour,
j'ai des images format 1024 * 768 dans un repertoire.
afin d'afficher ces images sur mon site internet je cré une fausse miniature de chaque images en modifiant le height et le whidth mais le resulatat obtenu ne me conviend pas.

je voudrais que mes miniatures d'images aient en largeur maxi 90 px et en hauteur maxi 90px (que je modifierai par la suite en fonction du graphisme de mon site).
le problème et que le redimenssionnement ne fonctionne pas toujours car j'ai des images qui ont leur dimenssions plus grandes que celle que je souhaites.

actuellement j'ai fais ce petit bout de code : si vous pouviez m'aider a resoudre ce probleme...


if(!empty($fichier)){ 
    sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant 
    echo "Liste des fichiers/documents accessibles dans '$dir_nom' :<br/>"; 
        foreach($fichier as $lien) { 
        $size = GetImageSize("$dir_nom/$lien"); 
             
    //Largeur maximale de l'image pour la cr&eacute;ation des miniatures  
    $largeur_maxi = 90; 
    $hauteur_maxi = 90;  
    if ($size[0] > $largeur_maxi)  
        {  
            $width = $largeur_maxi;  
            $theight = ($size[0]/$largeur_maxi);  
            $height = ($size[1]/$theight);  
        } 
		
	    if ($size[1] > $hauteur_maxi)  
        {  
            $height = $hauteur_maxi;  
            $twidth = ($size[1]/$hauteur_maxi);  
            $width = ($size[0]/$twidth);  
        } 
	   
            echo "<a href=\"$dir_nom/$lien \"><img src=\"$dir_nom/$lien \" width=".$width." height=".$height." alt=\"Photo des Vosges : $lien\" /></a>"; 
             
            echo  $size[0]. 'x' .$size[1] ; 
        } 
    echo ""; 
 } 
Pour cela il faut que tu compares leurs ratios à 1 et si c'est supérieur tu modifies la largeur et si inférieur la hauteur.
Ex :

$largeur = 16;
$hauteur = 9;

$ratio = $largeur / $hauteur;

if($ratio == 1) {// ya rien à faire }
elseif($ratio > 1) { 
  $largeur = LARGEUR_MAX;
  $hauteur = $hauteur * LARGEUR_MAX / $largeur;
} 
elseif($ratio < 1) { 
  $hauteur = HAUTEUR_MAX;
  $largeur = $largeur * HAUTEUR_MAX / $hauteur;
}


Voilà, normalement ça devrait aller Smiley cligne