par
khrea » 27 mars 2010, 20:16
Bonjour,
Je cherche à créer une galerie d'images avec des miniatures (je précise que je me suis déjà renseigné sur mon ami google). Je stock les grandeurs nature dans un dossier "photos". J'ai crée deux fichiers :
Le premier, thumb.php, avec le code suivant :
<?php
/* Le contenu généré sera une image PNG */
header("Content-type: image/png");
/* Récupération du paramêtre */
$file = $_GET["file"];
/* Récupération des attributs de l'image. */
$attr = getimagesize($file);
$src = imagecreatefromjpeg($file);
/* Création de l'image de destination. La taille de la miniature sera 133x100 */
$dest = imagecreatetruecolor(133,100);
/* Redimensionnement de src sur dest */
imagecopyresampled($dest,$src,0,0,0,0,133,100,$attr[0],$attr[1]);
imagepng($dest);
?>
Et le deuxieme, photos.php :
<?php
$PHOTOS_DIR="photos";
/* Nom du répertoire contenant les photos. */
/* Dans cet exemple, ce nom est contenu dans ce script.
Pour une version portable de notre gallerie, il serait judicieux de le passer en paramêtre */
$cpt=0; /* Compteur d'image par ligne. */
$cptotal = 0; /* Nombre total d'images. */
if ( is_dir($PHOTOS_DIR) )
/* Si myphotos est bien un répertoire valide */
{
if ( $handle= opendir($PHOTOS_DIR) ) /* Ouverture du répertoire */
{
/* Nos images seront affichées dans un tableau. */
echo "<table width='100%' cellspacing='2' align='center'>";
/* parcours et affichage de toutes les images */
while ( ($file= readdir($handle)) != NULL )
{
/* Test obligatoire pour ne pas afficher des images erronées */
if ( $file != "." & $file != "..")
{
$cptotal++;
if ( $cpt == 0 ) /* debut d'une ligne */
{
echo "<tr>";
echo "<td align='center' valign='center'>";
/* Lien vers le fichier image */
$file = ''.$PHOTOS_DIR.'/'.$file.'';
echo "<img class='gallerie' border='0' src='thumb.php?file=".$file."'>";
/* Affichage du nom du fichier image */
$cpt++;
echo "</td>";
}
if ( $cpt == 5 ) /*Après 5 images affichées, nouvelle ligne */
{
echo "</tr>";
$cpt=0;
}
}
}
/* Fin du parcours des images */
if ( $cpt != 5 )
{
/* La ligne n'a pas été fermée en fin de boucle */
echo "</tr>";
}
echo "<table>";
/* end if ($handle= opendir($PHOTOS_DIR) ) */
if ( $cptotal == 0 )
{
echo "<p>Aucune photo trouvée !</p>";
} /* end if (isdir...) */
}
}
?>
Ce procédé n'affiche qu'une seule miniature, celle d'une des images se trouvant dans le dossier "photos". Quelqu'un aurait-il une idée, pourquoi toutes les miniatures ne se créent-elles pas ?
Merci d'avance.
Bonjour,
Je cherche à créer une galerie d'images avec des miniatures (je précise que je me suis déjà renseigné sur mon ami google). Je stock les grandeurs nature dans un dossier "photos". J'ai crée deux fichiers :
Le premier, thumb.php, avec le code suivant :
<?php
/* Le contenu généré sera une image PNG */
header("Content-type: image/png");
/* Récupération du paramêtre */
$file = $_GET["file"];
/* Récupération des attributs de l'image. */
$attr = getimagesize($file);
$src = imagecreatefromjpeg($file);
/* Création de l'image de destination. La taille de la miniature sera 133x100 */
$dest = imagecreatetruecolor(133,100);
/* Redimensionnement de src sur dest */
imagecopyresampled($dest,$src,0,0,0,0,133,100,$attr[0],$attr[1]);
imagepng($dest);
?>
Et le deuxieme, photos.php :
<?php
$PHOTOS_DIR="photos";
/* Nom du répertoire contenant les photos. */
/* Dans cet exemple, ce nom est contenu dans ce script.
Pour une version portable de notre gallerie, il serait judicieux de le passer en paramêtre */
$cpt=0; /* Compteur d'image par ligne. */
$cptotal = 0; /* Nombre total d'images. */
if ( is_dir($PHOTOS_DIR) )
/* Si myphotos est bien un répertoire valide */
{
if ( $handle= opendir($PHOTOS_DIR) ) /* Ouverture du répertoire */
{
/* Nos images seront affichées dans un tableau. */
echo "<table width='100%' cellspacing='2' align='center'>";
/* parcours et affichage de toutes les images */
while ( ($file= readdir($handle)) != NULL )
{
/* Test obligatoire pour ne pas afficher des images erronées */
if ( $file != "." & $file != "..")
{
$cptotal++;
if ( $cpt == 0 ) /* debut d'une ligne */
{
echo "<tr>";
echo "<td align='center' valign='center'>";
/* Lien vers le fichier image */
$file = ''.$PHOTOS_DIR.'/'.$file.'';
echo "<img class='gallerie' border='0' src='thumb.php?file=".$file."'>";
/* Affichage du nom du fichier image */
$cpt++;
echo "</td>";
}
if ( $cpt == 5 ) /*Après 5 images affichées, nouvelle ligne */
{
echo "</tr>";
$cpt=0;
}
}
}
/* Fin du parcours des images */
if ( $cpt != 5 )
{
/* La ligne n'a pas été fermée en fin de boucle */
echo "</tr>";
}
echo "<table>";
/* end if ($handle= opendir($PHOTOS_DIR) ) */
if ( $cptotal == 0 )
{
echo "<p>Aucune photo trouvée !</p>";
} /* end if (isdir...) */
}
}
?>
Ce procédé n'affiche qu'une seule miniature, celle d'une des images se trouvant dans le dossier "photos". Quelqu'un aurait-il une idée, pourquoi toutes les miniatures ne se créent-elles pas ?
Merci d'avance.