Gallerie d'images en php

mainstream01 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Scienti Messages postés 14 Statut Membre -
Bonjour,

Bonjour, je suis débutant en php, et j'essaye de réaliser une galerie simple d'images à partir de plusieurs photos.
en gros, j'essaye d'ecrire un script permettant de génerer une image unique composée de toutes mes images de base, mais sans succès.

Je ne demande pas à ce que quelqu'un fasse le script pour moi, mais j'aimerais just avoir quelques piste, je ne sais pas par quoi commencer!!

Help SVP!

10 réponses

  1. mainstream01 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    En faite, ce que je veux faire est plus simple, je veux faire la gallerie à partir d'un répertoire sur le disque en fait!

    et c'est le script avec GD qui me pose probleme, je ne sais pas par quoi commencer, voila le script que j'ai ecrit mais il marche pas pour l'instant :

    <?php
    header ("Content-type: image/jpg");
    $img_finale = imagecreate( 919, 326);
    ?>
    <?php

    //fonction pour miniaturiser l'image de base
    function miniature($img)
    {
    $img_url = $img;
    $img = imagecreatefromjpeg($img_url);
    $x = imagesx($img);
    $y = imagesy($img);
    if($x>$max or $y>$max)
    {
    if($x>$y)
    {
    $nx = $max;
    $ny = $y/($x/$max);
    }
    else
    {
    $nx = $x/($y/$max);
    $ny = $max;
    }
    }
    $nimg = imagecreatetruecolor($nx,$ny);
    imagecopyresampled($nimg,$img,0,0,0,0,$nx,$ny,$x,$y);
    $mini = imagejpeg($nimg);
    }

    //ouverture et parcours de dossier d'images
    $mydir = 'images';
    if ($dir = @opendir($mydir))
    {
    while (($file = readdir($dir)) !== false)
    {
    if($file != ".." && $file != ".")
    {
    $listimg[] = $file;
    }
    }
    closedir($dir);
    }

    $longueur = count($listimg);

    for($i=0;$i < $longueur;$i++)
    {
    $mini = miniature($listimg[$i]);
    $listmini[] = $mini;
    $i++;
    }

    for($i=0;$i < $longueur;$i++)
    {
    $img = imagecreatefromjpeg($listmini[$i]);
    $img_size = getimagesize($listmini[$i]);
    imagecopy ( $img_finale, $img1, 0, 0, 0,0, $img1_size[0], $img1_size[1]);

    }
    imagejpeg($img_finale);

    ?>

    Merci encore pour la réponse !
    0
  2. mainstream1
     
    Il n' a t-il personne pour m'aider :s

    SVP
    0
  3. Mimiste Messages postés 1159 Statut Membre 206
     
    c'est quoi qui ne marche pas dans ton script ?
    0
  4. mainstream01 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour, en fait, j'ai refait tout mon script, je charge toute mes images dans un tableau, puis je les récupère, mais ça marche pas, en fait, il me dit que le lien dans le tableau n'est pas un lien vers une image !
    De l'aide SVP

    vloila le nouveau script :

    <?php

    header ("Content-type: image/png");
    $img_finale = imagecreate(919,326);

    // images source

    $listimg = array ('im-11.jpg', 'img-12.jpg', 'im-33.jpg', 'img-44.jpg', 'img-15.jpg');

    $img_finale = imagecreatetruecolor( 919, 326);
    $i =0;
    $largeur = 0;
    $hauteur = 0;
    for ($i =0; $i<7; $i++)
    {
    $img = imagecreatefromjpeg($listimg[$i]);
    $img_size = getimagesize($listimg[$i]);
    if ($largeur <919)
    {
    imagecopy ( $img_finale, $img, $largeur, 0, $hauteur,0, $img_size[0], $img_size[1]);
    $largeur = $largeur + $img_size[0];
    }
    else
    {
    $largeur = 0;
    $hauteur = $hauteur + $img_size[1];
    imagecopy ( $img_finale, $img[$i], $largeur, 0, $hauteur,0, $img_size[0], $img_size[1]);
    }
    }
    imagejpeg($img_finale);

    ?>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mimiste Messages postés 1159 Statut Membre 206
     
    ton image par exemple im-11.jpg
    elle est bien dans le même repertoire que ton script php ?
    0
  7. Mihawk Messages postés 4753 Statut Contributeur 846
     
    Hello,

    Soyons fous. Voici une ébauche sans utiliser GD (donc en utilisant les images originales).

    <?php 
    $picturesName = array(); 
    $directory = "C:\mesimages"; // à modifier 
    
    // On récupère tous les noms de fichiers images du dossier 
    while ($file = readdir($directory)){ 
       if ($file != "." && $file != ".." && preg_match('#\.(jpg|jpeg|png|gif)$#i', $file)){ 
          $picturesName[count($picturesName)] = $file; 
       } 
    } 
    
    // On affiche 
    for ($i=0 ; $i<count($picturesName) ; $i++){ 
       $imagePath = $directory.'\'.$picturesName[$i]; 
       echo ('<img style="width:100px; height:100px" src="'.$imagePath.'"/>'); 
    } 
    ?>


    Bien sûr c'est une ébauche, ça sera moche et tout ça mais bon :-)
    Mihawk
    "La rigoureusité fait la qualité"
    0
  8. mainstream01 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    @Mimiste Oui elle est dans le même répertoire
    0
  9. thunder413
     
    Essaye cette fonction
    function minuature($imgSrc,$WDest, $HDest, $repDst="") {
    
    
       // si le fichier existe dans le répertoire, on continue...
      if (file_exists($imgSrc)) { 
       
       // extensions acceptees : 
       $allowedExtension = array('jpg', 'jpeg' ,'png');
       // extension fichier Source
       $extension = pathinfo($imgSrc,PATHINFO_EXTENSION);
       // si l'extension est permise
       if( in_array($extension,$allowedExtension) {
           // On créer le nom de l'image mini
          $imgSrcName = pathinfo($imgSrc,PATHINFO_BASENAME);
          $name = substr($imgSrcName,0,strlen($imgSrcName)-(strlen($extenion)+1);
          $imgDestName = empty($repDest) ? $name."_mini.".$extension : $repDst."/".$name."_mini.".$extension;  
          // recuperation des dimensions de l image Src
          $imgSize = getimagesize($imgSrc);
          $WSrc = $imgSize[0]; // largeur
          $HSrc = $imgSize[1]; // hauteur
          // Nouvelle dimention proportionnel
          $ratiox = $WSrc / $WDest; // ratio en largeur
          $ratioy = $HSrc / $HDest; // ratio en hauteur
          $ratio = max($ratiox,$ratioy); // le plus grand
          $W = $WSrc/$ratio;
          $H = $HSrc/$ratio;   
          // creation de la ressource-image "Src" en fonction de l extension
         switch($extension) {
             case 'jpg':
             case 'jpeg':
               $Src = imagecreatefromjpeg($imgSrc);
               $Dst = imagecreatetruecolor($W,$H);
             break;
             case 'png':
               $Src = imagecreatefrompng($img_Src);
               $Dst = imagecreatetruecolor($W,$H);
               // fond transparent pour les png 
               imagesavealpha($Dst, true);
               $trans_color = imagecolorallocatealpha($Dst, 0, 0, 0, 127);
                imagefill($Dst, 0, 0, $trans_color);
               break;
             }
             // copie, redimensionne, re-echantillonnage
             imagecopyresampled($Dst, $Src, 0, 0, 0, 0, $W, $H, $WSrc, $HSrc); 
             
             // ENREGISTREMENT dans le repertoire (avec la fonction appropriee)
             switch ($extension) { 
             case 'jpg':
             case 'jpeg':
               imagejpeg ($Dst,$imgDestName );
               break;
             case 'png':
               imagepng ($Dst,$imgDestName );
               break;
             }
             
             // liberation des ressources-image
             imagedestroy ($Src);
             imagedestroy ($Dst);
             // si le fichier a bien ete cree
             if (file_exists($imgDestName ) ) { 
                   return $imgDestName; 
             } else {
                 die("Erreur lors de la creation de la minuature ==> ".$imgDestName);
             }
       } else {
            die("Extension du fichier incorrecte !!!");
       }
    }
    
    
    0
    1. thunder413
       
      utilise la comme suit
      //ouverture et parcours de dossier d'images 
      for($i=0; $i < count($listimg);$i++) {
      // si tu veut que la minuature soit ceer dans le même repertoire
      $listmini[] = minuature($listimg[$i],150,150); 
      //Si tu veut que la minuature soit créer dans un repertoire différent
      $listmini[] = minuature($listimg[$i],150,150,"./gallerie");
      } 
      
      // affichage
      for($i=0;$i <sizeof($listmini);$i++) {
          echo '<img src="'.$listmini[$i].'">';
      }
      
      0
  10. Mimiste Messages postés 1159 Statut Membre 206
     
    bonjour

    ben si je devai faire ça j'aurai

    un repertoire sur mon ftp avec toutes les images

    une base de donnée mysql avec une table contenant les lien de chaque images

    un script php qui utilise la librairie GD pour générer une image
    -1
    1. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Pas besoin de la base si toutes les images sont dans le dossiers !
      0
    2. Mimiste Messages postés 1159 Statut Membre 206
       
      bah "besoin" non évidement, mais il a demandé des pistes, et voila juste comment je ferais. (je pense toujours évolutif dans mes dev, et la base de données permettrait d'avoir bien d'autres info sur les images de la galerie)
      0