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

Langage PHP Discussion :

une galerie d'images


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 34
    Points
    34
    Par défaut une galerie d'images
    bonjour tlm

    j'ai fini ma page du listing des équipes (pour ceux qui ont suivi hier ^^) et maintenant je dois faire la galerie ... J'ai déjà cherché des scripts préfaits de galeries automatiques, j'en ai pris un, mais il marche pas correctement : il affiche bien sur le nombre de colonnes désirées, quand on clique sur la vignette on a le bon lien vers l'image plus grande, le probleme, ce qu'il n'arrive pas a créer les vignettes, a la place j'ai pleins de jolies cases agrémentées d'une tite croix rouge sur fond blanc ^^

    voici le code du script de création des vignettes :

    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
    <?php
    // on défini notre ratio pour nos miniatures (CF. plus haut pour des explications
    $ratio = 150;
    // on défini le répertoire qui contient nos images de grande taille
    $dir = './images';
     
    // si aucune image n'est donnée en arguments, on redirige le visiteur vers l'accueil de la galerie
    if (!isset($_GET['f'])) {
        header('location: galerie.php');
        exit();
    }
    else {
        // on récupère le nom de fichier à miniaturiser
        $image = $_GET['f'];
        // on récupère les infos de cette image
        $tableau = @getimagesize('./images/'.$image);
        // si il ne s'agit pas d'un fichier image, on redirige le visiteur vers l'accueil de la galerie
        if ($tableau == FALSE) {
            header('location: galerie.php');
            exit();
        }
        else {
            // si notre image est de type jpeg
            if ($tableau[2] == 2) {
                // on crée une image à partir de notre grande image à l'aide de la librairie GD
                $src = imagecreatefromjpeg($dir.'/'.$image);
                // on teste si notre image est de type paysage ou portrait
                if ($tableau[0] > $tableau[1]) {
                    $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
                    imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
                }
                else {
                    $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
                    imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
                }
                // contrairement au premier cas où l'on créait un fichier sur le disque dur, ici, comme on génère des images à la volée, on envoie un header au navigateur web du visiteur lui disant que le fichier mini.php va en fait générer une image de type jpeg, soit du type mime image/jpeg.
                header ("Content-type: image/jpeg");
                imagejpeg ($im);
            }
            elseif ($tableau[2] == 3) {
                $src = imagecreatefrompng($dir.'/'.$image);
                if ($tableau[0] > $tableau[1]) {
                    $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
                    imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
                }
                else {
                    $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
                    imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
                }
                header ("Content-type: image/png");
                imagepng ($im);
            }
        }
    }
    ?>

    et celui la celui de la page galerie.php qui doit afficher les images :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>page de test</title>
    	   <link href="style.css" rel="stylesheet" type="text/css">
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
       </head>
       <body>
     
       <div id="header">
       </div>
     
      <? include('menu.htm'); ?>
     
     
     
     
       <div id="vide">
       </div>
     
       <div id="barre_haut">
       </div>
     
       <div id="corps">
     
     
    		<?php
     
    $tableau = array();
    $dossier = opendir ('./images/'); 
    while ($fichier = readdir ($dossier)) {
        if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
            $tableau[] = $fichier;
        }
    } 
    closedir ($dossier); 
     
    $nbcol=4;
    $nbpics = count($tableau);
     
    if ($nbpics != 0) {
        echo '<table>';  
        for ($i=0; $i<$nbpics; $i++){
            if($i%$nbcol==0) echo '<tr>';  
            // noter bien que l'on place un lien vers le fichier mini.php qui va générer nos miniatures. On ajoute un argument, le nom de fichier image à miniaturiser
            echo '<td><a href="images/' , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" /></a></td>';  
            if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';
        }  
        echo '</table>';
    }
    else echo 'Aucune image à afficher';
    ?>
     
     
     
       </div>
     
       <div id="barre_bas">
       </div>
     
       </body>
    </html>

  2. #2
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    il me semble, mais je n'en suis pas sur du tout
    qu'il te faut une librairie supplémentaire dans ton php pour cette fonction
    librairie GD ??
    oulala je m'engouffre ^^

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    en effet, sur le site il est expliqué qu'il faut la librairie graphique de PHP : la librairie GD, mais comment l'avoir ?? je vais chercher un peu ...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    après qqs lectures, je sais pas du tout comment avoir cette librairie, il semble qu'elle soit incorporée dans le package PHP installé sur la machine

    et il semblerait que je ne l'ai pas !!

    arf, comment faire ?

    peut être laisser tomber ce script pour un autre sans librairie GD ... le php est vraiment cruel

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Mince, j'espérais pourtant que la plupart des hébergeurs mettaient la librairie GD à disposition. C'est qu'on est vite limité si on ne l'a pas :/

    Sans aucune librairie graphique, je pense qu'il te sera relativement difficile de faire du traitement d'images.

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 66
    Points : 63
    Points
    63
    Par défaut
    bonjour
    nouveau ici
    j'ai le m problème
    il semble chez moi que c'est à cause d'apache 2 qui n'accepte pas "readdir"
    je cherche

  7. #7
    Expert éminent
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Points : 8 237
    Points
    8 237
    Par défaut
    voici un petit script pour savoir si gd est installé ou non

    le script me semble un peu compliqué pour ce qu'il doit faire...

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 66
    Points : 63
    Points
    63
    Par défaut
    mème avec GD installé cela ne fonctionne pas
    lorsque certaines vignettes sont quand mème créées (et ce souvent d'une façon incomplète en nombre) elles ne sont pas affichables par php
    bien que parfaitement affichées dans le navigateur
    apache 2 doit y être pour qq chose
    en plus le code qui ne fonctionne pas chez moi (mais trés semblable au sujet du post tant au code qu'au disfonctionnement) est trés largement testé sur des sites puisqu'il s'agit de GPhotos

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Es-tu certain que les noms sont correctement formatés, que les chemins sont corrects et que les fichiers existent ?

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 66
    Points : 63
    Points
    63
    Par défaut
    oui
    j'ai meme essayé en renommant les fichiers et répertoires
    c'est pratique pour cela d'avoir tout chez soi
    rien n'y fait
    http://gerard-arlic.com
    vignette "sorties"
    vignette "domo2pinos"
    11 vignettes visibles
    alors qu'il y a 42 images

Discussions similaires

  1. [OpenOffice] [Présentation] Spécifier un chemin pour une galerie d'images
    Par topdawg dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 14/02/2009, 04h51
  2. Pagination d'une galerie d'image sans recharger
    Par luffy59 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/07/2008, 15h38
  3. [FPDF] Faire une galerie d'images en PDF
    Par BernardT dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/06/2008, 12h04
  4. [AJAX] Construction d'une galerie d'images avec Ajax
    Par Pmko01 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2008, 16h32
  5. [Galerie] Recherche une galerie d'images
    Par Chickenkiller dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 19/09/2006, 17h03

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