san_ | Bonjour, J'ai un problème que j'arrive pas à résoudre avec ma gallerie d'image en php (source complète ci-dessous). Ce code sert à générer une gallerie d'image avec miniatures à partir d'un dossier contenant les images, et mon problème est le suivant : il ne crée pas de vignette lorsque la hauteur de l'image excede environ 1100 pixels. J'arrive pas à comprendre pourquoi, donc je viens chercher un peu d'aide chez les pro. Merci d'avance Code :
- class Gallery {
- var $nom_page = 'gallery.php'; // nom de ce fichier
- var $afficher_nom = 1; // 1 = afficher le nom de l'image
- var $enlever_extention = 1; // 1 = enlever l'extention dans l'affichage du nom de l'image (ne fonctionne que si $afficher_nom = 1)
- var $remplacer_ = 0; // 1 = remplacer les _ par des espaces dans les nom de fichier (ne fonctionne que si $afficher_nom = 1)
- var $afficherpoids = 1; // 1 = afficher le poids des images
- var $couleur_texte = "#FFFFFF"; // Couleur du texte
- var $largeur_miniatures = 120; // Largeur des miniatures
- var $hauteur_miniatures = 120; // Hauteur des miniatures
- var $imagesaafficherparligne = 4; // Nombre de miniatures affichées par ligne
- var $ext_autorise = array('png', 'jpg', 'gif', 'jpeg'); // Types de fichiers utilisés - ne pas modifier
- var $dossier_images = './img/eurometal'; // Dossier contenant les images (ne pas mettre de / à la fin)
- function afficherHeader() {
- echo "<title>".$this->titre."</title>\r\n<style type=\"text/css\">\r\na:link, a:visited, a:active {\r\ntext-decoration: none;\r\ncolor: ".$this->couleur_texte."\r\n}\r\na:hover {\r\ntext-decoration: underline;\r\ncolor: ".$this->couleur_texte."\r\n}\r\n</style>\r\n</head>\r\n<body text=\"".$this->couleur_texte."\">\r\n<div align=\"center\">\r\n<table width=\"100%\" border=\"0\">\r\n";
- }
- function afficherFooter() {
- echo "</table></div>\r\n</body>\r\n</html>";
- }
- function listerDossier() {
- $main = opendir($this->dossier_images);
- while(($n = readdir($main)) !== false) {
- $tempext = strtolower(substr(strrchr($n, '.'),1));
- if(is_file($this->dossier_images.'/'.$n) && in_array($tempext, $this->ext_autorise)) {
- $images[] = $n;
- }
- }
- if(empty($images)) { die($this->afficherHeader()."<tr><td align=\"center\">Dossier vide.</td></tr>\r\n" ).$this->afficherFooter(); }
- sort($images);
- $this->afficherHtml($images);
- }
- function afficherHtml($images) {
- echo $this->afficherHeader();
- $x = 0;
- while(isset($images[$x])) {
- echo "<tr>\r\n";
- for($i=1; $i <= $this->imagesaafficherparligne; $i++) {
- if(!empty($images[$x])) {
- if($this->afficher_nom == 1) {
- $nom = $images[$x];
- if($this->enlever_extention == 1) { $nom = ereg_replace(substr(strrchr($images[$x], '.'), 0), '', $images[$x]); }
- if($this->remplacer_ == 1) { $nom = ereg_replace('_', ' ', $nom); }
- $nom = "<br />".$nom."";
- if($this->afficherpoids == 1) { $size = "<br /><font size=\"2\">(".round(filesize($this->dossier_images.'/'.$images[$x]) / 1024, 2)." Ko)</font>"; }
- }
- echo '<td width="'.intval(100 / $this->imagesaafficherparligne).'%" align="center"><a href="'.$this->dossier_images.'/'.$images[$x].'" target="_blank"><img src="'.$this->nom_page.'?img='.urlencode($images[$x]).'" alt="" border="0" />'.$nom.'</a>'.$size.'<br /><br /></td>'."\r\n";
- $x++;
- }
- }
- echo "</tr>\r\n";
- }
- echo $this->afficherFooter();
- }
- function genererMiniatures($img) {
- if(!function_exists('gd_info')) { die('Erreur : la librairie GD n\'est pas activée sur votre serveur.'); }
- $tempext = strtolower(substr(strrchr($img, '.'),1));
- if(!in_array($tempext, $this->ext_autorise));
- if($tempext == 'jpg' || $tempext == 'jpeg') {
- $source = @imagecreatefromjpeg($this->dossier_images.'/'.$img);
- } elseif($tempext == 'gif') {
- $source = @imagecreatefromgif($this->dossier_images.'/'.$img);
- } elseif($tempext == 'png') {
- $source = @imagecreatefrompng($this->dossier_images.'/'.$img);
- } else { die('Error !'); }
- $infos = @getimagesize($this->dossier_images.'/'.$img);
- $largeur_original = $infos[0];
- $hauteur_original = $infos[1];
- if($infos[0] > $this->largeur_miniatures || $infos[1] > $this->hauteur_miniatures) {
- $pl = $infos[0] / $this->largeur_miniatures;
- $ph = $infos[1] / $this->hauteur_miniatures;
- if ($ph > 1 || $pl > 1) {
- if ($ph > $pl) {
- $largeur_new = $infos[0] / $ph;
- $hauteur_new = $infos[1] / $ph;
- } else {
- $largeur_new = $infos[0] / $pl;
- $hauteur_new = $infos[1] / $pl;
- }
- }
- $img = @imagecreatetruecolor($largeur_new, $hauteur_new);
- @imagecopyresized($img, $source, 0, 0, 0, 0, $largeur_new, $hauteur_new, $largeur_original, $hauteur_original);
- @header('Content-type: image/jpeg');
- @imagejpeg($img, '', 100);
- } else {
- @header('Content-type: '.$infos['mime']);
- echo file_get_contents($this->dossier_images.'/'.$img);
- }
- }
- }
- $class = new Gallery();
- if(!empty($_GET['img'])) {
- $img = get_magic_quotes_gpc() ? stripslashes($_GET['img']) : $_GET['img'];
- $class->genererMiniatures($img);
- } else {
- $class->listerDossier();
- }
|
Message édité par san_ le 30-01-2008 à 23:20:28
|