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] Pb de Miniaturisation d'Images Haute definition


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Points : 151
    Points
    151
    Par défaut [GD] Pb de Miniaturisation d'Images Haute definition
    Bonjour,

    pour le projet sur lequel je bosse, je dois miniaturiser des images et les fusionner avec un fond. Tout marche très bien en local mais mis sur le net, j'ai des problèmes sur (je suppose) certaines fonctions de GD.

    Lors de la miniaturisation, certaines images, apparemment en trop haute définition, ne se miniaturisent pas et laissent la place à une vignette noire, un peu comme si on avait fait un imagecreatetruecolor() et qu'on l'avait directement affiché... J'ai tout de suite pensé qu'il s'agissait d'un problème avec ma fonction imagecopyresampled(), donc j'ai essayé d'intervertir avec imagecopyresized() mais ça ne marche toujours pas.

    Ce qui est bizarre, c'est que ça marche très bien en local, pour toutes les photos, et en ligne ça marche avec toutes les photos qui ne dépassent pas une résolution donnée... ce qui est embêtant puisque mon projet vise essentiellement des images de haute qualité...

    enfin si quelqu'un pouvait m'aider, ce serait très charitable, parce que google ne m'a été d'aucune utilité...

    le code de ma fonction de miniaturisation :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    function Redim($percent)
    {
     
      // Calcul des nouvelles dimensions
      list($width, $height) = getimagesize($this->nom);
     
      $newwidth = $width * $percent;
      $newheight = $height * $percent;
     
      // chargement => nécessite GD2
      $thumb = imagecreatetruecolor($newwidth, $newheight);
     
      switch (strtolower($this->format)){
     
              case ".jpg":
              $source = imagecreatefromjpeg($this->nom);
              break;
     
              case ".jpeg":
              $source = imagecreatefromjpeg($this->nom);
              break;
     
              case ".png":
              $source = imagecreatefrompng($this->nom);
              break;
     
              case ".gif":
              $source = imagecreatefromgif($this->nom);
              break;
     
              default: echo "votre image n'a pas un format compatible";
      }//switch
     
      // Redimensionnement
      imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
     
      // Enregistrement Miniature
      imagejpeg($thumb, $this->dirMini.'/'.basename($this->nom));
     
    }//Redim()

  2. #2
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    As tu regardé du coté de la mémoire alouée pour un process PHP ?
    Normalement par défaut c'est 8 Mo je crois. Mais si ton hébergeur l'a baissé à 2 Mo et que ton image en fait 4 alors ça ne passera pas.

    Mais tu as aucun message d'erreur ?

  3. #3
    Membre habitué Avatar de ciesco
    Inscrit en
    Février 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 110
    Points : 127
    Points
    127
    Par défaut
    TU es sur que ton hebergeur a la bibliotheque gd2 installee?

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Points : 151
    Points
    151
    Par défaut
    oui oui, j'ai vérifé la config

    pour la mémoire allouée, c'est memory_limit dans phpinfo ?

    j'en doute, ma valeur est à 40Mo

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    J'ai un script qui marche bien si ca te dit

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?php
     
    // ------------------------------------------------------------------------- //
    // Permet de réduire une image en gardant la hauteur proportionnelle à la    //
    // largeur. L'image ne se réduit que si elle dépasse les limites de hauteur  //
    // ou de largeur indiquées. Au final l'image est enregistrée sous un nom     //
    // aléatoire (et empêche l'écrasement).                                      //
    // ------------------------------------------------------------------------- //
    // Auteur: NobodX                                                            //
    // Email:  icecube@fr.fm                                                     //
    // Web:    http://icecube.fr.fm/                                             //
    // ------------------------------------------------------------------------- //
     
    /* RatioResizeImg avec (height % width) par NobodX */
    /*    Suivant la fonction ResizeGif de tjhunter    */
     
    function RatioResizeImg( $image, $newWidth, $newHeight) {
     
      // détéction du type de l'image
      @eregi("(...)$",$image,$regs);
      $type = $regs[1];
     
      switch($type) {
     
        //  case "gif": $srcImage = @ImageCreateFromGIF( $image ); break;
        //  case "GIF": $srcImage = @ImageCreateFromGIF( $image ); break;
        case "jpg": $srcImage = @ImageCreateFromJPEG( $image ); break;
        case "JPG": $srcImage = @ImageCreateFromJPEG( $image ); break;
        case "png": $srcImage = @ImageCreateFromPNG( $image ); break;
        default : unset($type); break;
     
      }
     
     
      if($srcImage) {
     
        // hauteurs/largeurs
        $srcWidth = @ImageSX( $srcImage );
        $srcHeight = @ImageSY( $srcImage );
        $ratioWidth = $srcWidth/$newWidth;
        $ratioHeight = $srcHeight/$newHeight;
     
        // taille maximale dépassée ?
        if (($ratioWidth > 1) || ($ratioHeight > 1))  {
     
          if( $ratioWidth < $ratioHeight) {
     
            $destWidth = $srcWidth/$ratioHeight;
            $destHeight = $newHeight;
     
          }
          else {
     
            $destWidth = $newWidth;
            $destHeight = $srcHeight/$ratioWidth;
     
          }
     
        }
        else {
     
          $destWidth = $srcWidth;
          $destHeight = $srcHeight;
     
        }
     
        // resize
        $destImage = @imagecreate( $destWidth, $destHeight);
        @ImageCopyResized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight );
     
        // nom du fichier
        $file = pathinfo($image);
        $dirname= $file["dirname"];
        $basename= $file["basename"];
        $extension = $file["extension"];
        $basename = str_replace(".$extension", ".mini.$extension", $basename);
     
        //$dest_file = $dirname . "/" . $basename;
        $dest_file = $image;
     
        // création et sauvegarde de l'image finale
        /* Ici on peut éditer le chemin de sauvegarde ($dest_file) */
     
        switch($type) {
     
          case "gif": @ImageGif($destImage, $dest_file); break;
          case "GIF": @ImageGif($destImage, $dest_file); break;
          case "jpg": @ImageJpeg($destImage, $dest_file); break;
          case "JPG": @ImageJpeg($destImage, $dest_file); break;
          case "png": @ImagePng($destImage, $dest_file); break;
     
        }
     
        // libère la mémoire
        @ImageDestroy( $srcImage );
        @ImageDestroy( $destImage );
     
        // renvoit l'URL de l'image
        return $dest_file;
     
      }
     // erreur
      else {
     
        // echo "Image \"$image\" inexistante ou aucun support ";
        // if ($type) {
        // 
        //   echo "pour le format $type<br>";
        // 
        // }
        // else {
        // 
        //   echo "pour ce format de fichier<br>";
        // 
        // }
     
        return FALSE;
     
      }
     
    }
     
    // Execution de la fonction
    // $imgurl = RatioResizeImg("chemin", largeur, hauteur)
    // echo "<img src=\"$imgurl\">";
     
    ?>

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Points : 151
    Points
    151
    Par défaut
    Merci j'y jetterai un oeil dès que j'aurai plus de temps.

    Mais je doute que ça resolve le problème, vu que celui semble venir de mon serveur et non de mon script (qui je le rappelle fonctionne parfaitement en local)

    mais merci quand même, c'est sympa

  7. #7
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Effectivement à 40 Mo ca ne doit pas être ça

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 186
    Points
    186
    Par défaut
    Salut,

    Limites la taille de l'envoi.
    Sur un de mes sites j'ai le même problème, j'avais alors limité la taille des fichiers envoyés à 500 ko.

    Le problème arrive encore une fois de temps en temps, mais je suppose que c'est dû à certaines très hautes résolutions (et très compressées qui tombent sous les 500 ko).

    A mon avis un simple contrôle de la taille te permetterait de dégager les erreurs...

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    http://www.developpez.net/forums/vie...22164&start=99

    faudra juste rajouter ton switch
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 186
    Points
    186
    Par défaut
    Ca m'étonnerait que ton code lui arrange son problème, a moins que sa fonction pour redimensionner soit un peu crade et qu'elle utilise alors plus de mémoire que nécessaire...

    Edit : je me rapellais plus qu'il y'avait le code avec le premier message. Il a pas l'air mauvais, a mon avis ça ne changera rien...

    Ps : joli code au fait...

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

Discussions similaires

  1. [CSS 2] Alignement 3 images (Haut-Milieu-Bas) sur div
    Par Korben_Debile dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/05/2010, 21h55
  2. [Image] Sauvegarde d'images haute résolution en Java
    Par Tyler_Durden dans le forum 2D
    Réponses: 0
    Dernier message: 22/08/2008, 12h54
  3. Probleme avec des video haut definition
    Par badr dans le forum Vidéo
    Réponses: 0
    Dernier message: 21/11/2007, 01h37
  4. Manipulaion Images haute résolution
    Par JakeGrafton dans le forum Langage
    Réponses: 22
    Dernier message: 25/05/2005, 23h53

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