Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création de miniature

À l'aide !

Sujet résolu
    8 mai 2006 à 17:48:09

    J'ai installé sur mon site un code pour faire des miniatures (à partir d'un tuto de ce site je croix) mais il ne fonctionne pas ! Il n'y a aucun message d'erreur, la page de création de la miniature se charge correctement, mais l'image n'est pas créée !!
    Voilà le code :


    function miniature($dossier_provenance, $nomFichier, $limite, $id)
    {

    //on récupère l'extension (jpg, jpeg ou gif)
    $extention_fichier=strtolower(substr(strrchr($nomFichier,'.'),1));
           

                   

    //on récupère la taille de l'image de départ
    $size = getimagesize($dossier_provenance . $nomFichier);
    $hauteur = $size[1];
    $largeur = $size[0];





            if ($extention_fichier=="jpg" OR $extention_fichier=="jpeg"){
                // crée l'img de destination par rapport a la source
                $source = imagecreatefromjpeg($dossier_provenance . $nomFichier); // La photo est la source
            }
            else{
                // crée l'img de destination par rapport a la source
                $source = imagecreatefromgif($dossier_provenance . $nomFichier); // La photo est la source
            }


    if($hauteur > $largeur) // Calcule des dimensions miniatures
    {

    $largeur = ($largeur * $limite) / $hauteur ; // Calcule de la hauteur miniature
    $hauteur = $limite;

    }
    elseif($largeur > $hauteur)
    {

    $hauteur = ($hauteur * $limite) / $largeur// Calcule de la largeur miniature
    $largeur = $limite;

    }
    else{
    $hauteur = $limite;
    $largeur = $limite;
    }

    $destination = imagecreatetruecolor($largeur, $hauteur); // On crée la miniature vide

    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);

    // On crée la miniature
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);



    // On enregistre la miniature sous le nom "mini_couchersoleil.jpg"

            if ($extention_fichier=="jpg" OR $extention_fichier=="jpeg"){
                // crée l'img de destination par rapport a la source
                imagejpeg($destination, '../images/miniatures/' . $id . $nomFichier . '');
            }
            else{
                // crée l'img de destination par rapport a la source
                imagegif($destination, '../images/miniatures/' . $id . $nomFichier . '');
            }



    }


    Et je fais appel à cette fonction dans une page du dossier admin, voilà la ligne, mais rien ne bug ici (j'ai vérifié les variables...) :
    miniature($url, $nom, 75, $id);


    Edit : avant qu'on me le demande : oui, j'ai bien activé la librairie GD :-°
    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2006 à 19:25:13

      On doit pas activer les permissions pour "IUSR_nomdetonpc" aussi ? (si t'es en NTFS)
      • Partager sur Facebook
      • Partager sur Twitter
        8 mai 2006 à 19:49:37

        Euh...je n'ai pas très bien compris mais si ça peut t'aider: ce n'est pas une erreur de permission ou de configuration étant donné que j'ai déjà utilisé ce genre de script de redimention sans problème ...
        • Partager sur Facebook
        • Partager sur Twitter
          10 mai 2006 à 13:09:30

          Ben...Personne ne voit d'où ça peut bien venir ? Ça m'énerve vraiment ce problème, je ne vois pas d'erreur de syntaxe, des variables qui n'existeraient pas... En plus la page se charge bien ! C'est bizarre ! Il ne se passe rien en fait, pourtant, la fonction est bien utilisé (j'y ai mis au echo() pour tester, et le text s'est bien affiché)
          Vous avez une idée ? :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            13 mai 2006 à 13:42:13

            Mince alors, ça m'ennuie... Peut-être qu'il n'y a pas d'erreurs dans le script...

            Voilà la structure du site si ça peut aider (il y a seulement les fichiers et dossiers concernés) :
            >admin
            -----#index.php //page où illusion.php et fonction.php sont mis en include
            ----->site
            ----------#illusions.php //la page où est appelée la fonction miniature
            >includes
            -----#fonctions.php //page qui contient la fonction
            >images
            ----->miniatures
            ----------#???.jpg //toutes les miniature créées par la fonction
            • Partager sur Facebook
            • Partager sur Twitter
              13 mai 2006 à 14:19:07

              Voilà ma fonction, polyvalente, qui fonctionne parfaitement:

              <?php
              function mkthumb($srcfilename,$dstfilename,$maxwidth=0,$maxheight=0,$stretch=FALSE)
              {
               //Extensions
                 $srcext = strtolower(substr(strrchr($srcfilename,'.'),1));
                 $dstext = strtolower(substr(strrchr($dstfilename,'.'),1));
               //Formats
                 $formats = array('png'=>'png','jpg'=>'jpeg','jpeg'=>'jpeg','gif'=>'gif');
                 if (empty($formats[$srcext])) return FALSE; else $srcext = $formats[$srcext];
                 if (empty($formats[$dstext])) return FALSE; else $dstext = $formats[$dstext];
                 $srcf = "imagecreatefrom$srcext"; $dstf = "image$dstext";
               //Image source
                 $srcimg = $srcf($srcfilename);
                 $src_w = imagesx($srcimg);
                 $src_h = imagesy($srcimg);
               //Echelle de la nouvelle image
                 if ($stretch){
                   $dst_w = $maxwidth;
                   $dst_h = $maxheight;
                 }else{
                   if ($maxwidth == 0) $scale = ($maxheight / $src_h);
                   elseif ($maxheight == 0) $scale = ($maxwidth / $src_w);
                   else $scale = (($maxwidth / $src_w) < ($maxheight / $src_h)) ? ($maxwidth / $src_w) : ($maxheight / $src_h);
                   //Taille de la nouvelle image
                     $dst_w = $src_w * $scale;
                     $dst_h = $src_h * $scale;
                 }
               //Nouvelle image
                 $dstimg = imagecreatetruecolor($dst_w,$dst_h);
                 imagecopyresized($dstimg,$srcimg,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
               //Enregistrement
                 if ($dstext == 'jpeg') $dstf($dstimg,$dstfilename,100); else $dstf($dstimg,$dstfilename);
              }

              mkthumb("images/image1.jpg","images/thumb1.png",50,60);
              mkthumb("images/image1.jpg","images/thumb2.jpg",50,60,TRUE);
              mkthumb("images/image1.jpg","images/thumb3.gif",50);
              mkthumb("images/image2.png","images/thumb4.png",100,100);
              ?>
              • Partager sur Facebook
              • Partager sur Twitter
                13 mai 2006 à 14:27:10

                Choutte ! Je vais tester ça tout de suite :D
                Merci :)
                • Partager sur Facebook
                • Partager sur Twitter

                Création de miniature

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown