PHP - GD redimension d'image

dracucharles Messages postés 58 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour à tous,
J'ai une série d'images stockées dans ma base de données. Parmi cette série, j'en affiche quatre sur mon site en tant que "bannière", et elles sont chargées aléatoirement pour qu'elles diffèrent à chaque chargement de pages.

J'aimerais savoir s'il est possible de re dimensionner ces images à l'affichage simplement grâce à GD. C'est à dire que je conserve l'image normale qui est dans ma base mais lorsqu'elle s'affiche, elle apparait au format 150*113.
Pour être plus clair, imaginons que nous avons une image de 1600*1200 qui est dans ma base et lorsque que je l'affiche elle apparaît au format 150*113 sans qu'elle soit modifiée.

j'ai regardé la fonction imagecopyresampled() mais je pense que ça ne correspond pas à ce qu'il me faut (ou alors j'ai pas bien compris).

Merci de votre aide.
Configuration: Windows XP
Firefox 2.0.0.14

2 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    tiens un exemple de redim à l'affichage:

    <?php
    /*La fonction   fctaffichimage($W_max, $H_max, $img_Src)
    
    La fonction affiche : width="..." height="..."
    
    Les paramètres
    - $W_max : LARGEUR maxi d'affichage --> ou 0
    - $H_max : HAUTEUR maxi d'affichage --> ou 0
    - $img_Src : chemin+NOM de l'image Source
    
    - si $W_max = 0 --> LARGEUR auto
    - si $H_max = 0 --> HAUTEUR auto
    */
    
    			///// Utilisation :
    
    // FONCTION de redimensionnement "a l'affichage"
       // -----------------------------------------------------------------------------------------------------
    // fonction de redimensionnement A L'AFFICHAGE
    // -----------------------------------------------------------------------------------------------------
    // La FONCTION : fctaffichimage($W_max, $H_max, $img_Src)
    // Les parametres :
    // - $W_max : LARGEUR maxi finale ----> ou 0 : largeur libre
    // - $H_max : HAUTEUR maxi finale ----> ou 0 : hauteur libre
    // - $img_Src : NOM de l image Source
    // -----------------------------------------------------------------------------------------------------
    // Affiche :  width="..." height="..." pour la balise img
    // -----------------------------------------------------------------------------------------------------
    
    
    function fctaffichimage($W_max, $H_max, $img_Src) {
     // ------------------------------------------------------------------
       // Lit les dimensions de l'image
       $img_size = GetImageSize($img_Src);  
       $W_Src = $img_size[0]; // largeur
       $H_Src = $img_size[1]; // hauteur
     // ------------------------------------------------------------------
       // Teste les dimensions tenant dans la zone
       $H_test = round(($W_max / $W_Src) * $H_Src);
       $W_test = round(($H_max / $H_Src) * $W_Src);
     // ------------------------------------------------------------------
       // Si $H_max non précisé (0)
       if(!$H_max) { $H_max = $H_test; }
       // Sinon si $W_max non précisé (0)
       elseif(!$W_max) { $W_max = $W_test; }
       // Sinon teste quel redimensionnement tient dans la zone
       elseif($H_test > $H_max) { $W_max = $W_test; }
       else { $H_max = $H_test; }
     // ------------------------------------------------------------------
       // (procedure : ne retourne aucune valeur mais ...)
       // AFFICHE les dimensions optimales
       // Affiche :  width="..." height="..."
    
       echo ' width="'.$W_max.'" height="'.$H_max.'"';
    }
    ?>
    <html>
    <img alt="" src="IMG_0677.JPG" <?php fctaffichimage(200, 300, 'IMG_0677.JPG') ?> />
    
    </html>
    1
  2. ksven41
     
    essaye plutot imagecopyresized()
    0