Bonjour,

J'ai un petit souci avec le script qui n'affiche pas des miniatures de photos.
Pourriez-vous m'élairer sur ce prob ?

Merci d'avance

Je dispose un fichier index1.php et mini.php et un dossier titi qui contient les photos.

index1.php
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
<head>
<title>Ma galerie</title>
</head>
 
<body>
<?php
// cette portion à déjà été détaillé
$tableau = array();
$dossier = opendir ('./titi/');
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index1.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="titi/' , $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';
?>
 
 
</body>
</html>
mini.php

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 = './titi/';
 
// 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: index1.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('./titi/'.$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: index1.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);
        }
    }
}
?>