IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[GD] Redimensionnement d'images gif


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Points : 47
    Points
    47
    Par défaut [GD] Redimensionnement d'images gif
    Bonjour,
    Dans une page web, genre galerie photos, j'affiche une image de grande taille et plusieurs de petite taille. Quand on passe le curseur sur une petite image, elle remplace la grande. Rien de sorcier, 3 lignes de javascript et c'est ok.

    Oui, mais a condition que l'on télécharge directement toutes les images en grande taille en laissant à la machine du client le soin de faire les réductions nécessaires, d'où temps de téléchargement et charge de la machine du client qui n'est pas forcément musclée.

    Autre solution : avoir sur le serveur un répertoire pour les photos de grande taille et un autre pour les petites. Mais pour cela, il me faut reprendre un bon millier de photos pour les redimensionner.

    Enfin, une solution plus "reposante" consiste à faire faire le travail par le serveur en lui faisant redimensionner les photos quand on en a besoin : c'est une grosse machine qui fait ça sans sourciller (je n'ennuie personne puisque je suis sur un serveur dédié), je n'ai pas à reprendre mes photos et le temps de transmission est bon. Voila la fonction que j'utilise pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function reduire_photo($ad,$larg,$rep,$ext){
          list($width, $height) = getimagesize($ad);
          $newwidth = $larg;
          $newheight =(int)($height*$larg/$width);
          $a=explode("/",$ad);
          $l=count($a)-1;
          $adresse_photo_r=$rep.$a[$l];
          $thumb = imagecreatetruecolor($newwidth, $newheight);
          if($ext=="gif") $source = imagecreatefromgif($ad);
          if($ext=="jpg") $source = imagecreatefromjpeg($ad);
         imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
          if($ext=="gif") imagegif($thumb,$adresse_photo_r);
          elseif($ext=="jpg") imagejpeg($thumb,$adresse_photo_r);
          imagedestroy($thumb);
          return $adresse_photo_r;
    }
    $ad, l'adresse de la photo à redimensionner,
    $lar, le "width" de la photo redimensionnée,
    $rep, le chemin du sous répertoire où je veux enregistrer les photos redimensionnées,
    enfin $ext le type de photo (gif ou jpeg)

    Pas de problème, ça marche, après avoir ajouté ini_set("memory_limit","64M"); pour ne pas avoir une kyrielle de warning, sauf que les photos gif dont l'arrière plan est transparent ressorte avec un fond noir.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Points : 47
    Points
    47
    Par défaut
    Je reviens donner la solution que je viens de trouver dans http://fr.php.net/manual/fr/function...opyresized.php, car je pense que ça peut aider certains

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    function reduire_photo($ad,$larg,$rep,$ext){
      list($width, $height) = getimagesize($ad);
      $newwidth = $larg;
      $newheight =(int)($height*$larg/$width);
      $a=explode("/",$ad);
      $l=count($a)-1;
      $adresse_photo_r=$rep.$a[$l];
      $thumb = imagecreatetruecolor($newwidth, $newheight);
      if($ext=="gif") $source = imagecreatefromgif($ad);
      if($ext=="jpg") $source = imagecreatefromjpeg($ad);      
      $originaltransparentcolor = imagecolortransparent( $source );
      if($originaltransparentcolor >= 0 // -1 pour opaque
        && $originaltransparentcolor < imagecolorstotal( $source ))
      {
        $transparentcolor = imagecolorsforindex( $source, $originaltransparentcolor );
        $newtransparentcolor = imagecolorallocate(
          $thumb,
          $transparentcolor['red'],
          $transparentcolor['green'],
          $transparentcolor['blue']
        );
        imagefill( $thumb, 0, 0, $newtransparentcolor );
        imagecolortransparent( $thumb, $newtransparentcolor );
      }                   
      imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
      if($ext=="gif") imagegif($thumb,$adresse_photo_r);
      elseif($ext=="jpg") imagejpeg($thumb,$adresse_photo_r);
      imagedestroy($thumb);
      return $adresse_photo_r;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redimensionner une image (gif)
    Par lodan dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2009, 15h27
  2. [ImageMagick] Redimensionner une image JPEG PNG GIF
    Par Stouille89 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 25/08/2007, 22h10
  3. génération d'image (gif par ex) ou redimensionnement
    Par Satanas_et_diabolo dans le forum Multimédia
    Réponses: 1
    Dernier message: 08/05/2006, 19h24
  4. [Images] Redimensionner un fichier GIF
    Par Tragnee dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/12/2005, 10h28
  5. [32 bits] Redimensionner une image JPEG/GIF/PNG...
    Par CR_Gio dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 04/10/2005, 01h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo