[HELP] Galerie d'images : miniatures propres ???

LewoLewo Member
décembre 2010 modifié dans Entraide et S.A.T
Bonsoir à tous,

Voilà un paquet de cigarette et trois touffes de cheveux que je bidouille : sans succès !
Je suis loin d'être le maître de PHP mais habituellement, à force de tâtonner, je fini par arriver à mes fins. Sauf depuis quelques temps... Ce message est un appel au secours.

J'essaye de réaliser un petit script, normalement tout bête, pour lister les images d'un répertoire donner et créer les miniatures de ces dernière de manière automatique ET propre. J'entends par "propre" des miniatures carrées, de même dimensions...

J'ai dégoupiller EasyGallery dans tous les sens, farfouiller aux quatre coins du Web, essayé des dizaine de scripts, de class, de machins truc à base de Crop et de je ne sais quel magie : en vain !

Ma demande est pourtant simple :

- il me faut lister les images d'un répertoire (pas de souci, c'est écris dans le wiki de Pluxml)
- créer des miniatures propres à la manière d'EasyGallery- Crop ou je ne sais quoi (IMPOSSIBLE !)
- gérer le tout en affichage galerie à l'aide d'une box (pas de souci)

Si vous avez tout bien compris, mon gros problème c'est de créer mes miniatures carrées (de manière automatique et définitive -les miniatures ne se génèrent qu'une seule fois- ) dans mon répertoire défini.

Simple non ? Alors je suis preneur de toutes solutions ou début de solution... J'en puis plus !
Pardon pour cet appel à l'aide.

Réponses

  • Bonjour,

    il faudrait déjà nous dire quel travail tu as accompli et quelle erreur si il y en a une.
    ensuite, quelle hébergeur? (car free par exemple peut être embêtant...)

    Enjoy
  • LewoLewo Member
    décembre 2010 modifié
    Tu as raison Super_g2, je manque de clarté.
    Déjà, je ne suis pas chez Free (bon début). Au niveau du "travail accompli", pour le moment il n'y a rien de transcendant. J'ai tester pas mal de scripts et/ou de class en local tout en goupillant avec le modèle "Lister toutes les images d'un répertoire" déjà présent sur le wiki. Toujours sans aucun résultat probant. Je le répète, je suis un piètre codeur. Je me débrouille pas mal pour bidouiller, modifier etc des scripts déjà existants, mais lorsqu'il s'agit de faire quelques choses de A à Z (ou presque) alors là, c'est une autre histoire...

    Voila deux sites pour exemple (que j'ai essayé d'appliquer) :

    Tutoriel Galerie Dynamique
    PHP Thumb

    Rien à faire...
  • Voilà ou en est ma progression :

    J'ai fini par trouver les bonnes fonctions ici et là. A force de mélanger les sources et de tirer dans tous les sens, j'ai quelque chose de fonctionnel mais d'extrêmement lent.

    Liste des problèmes rencontrés (non résolu) :

    - Lenteur
    - Impossible de créer automatiquement le dossier "Thumbs" contenant les miniatures
    - Perturbation des droits d'écriture en passant par gestionnaire médias de Pluxml
    - ...

    Voici mon code qui est certainement à améliorer :
    <?php
    
    	function afficherImages($repertoire, $taille = 130, $colonnes = 4){
    		
    		$dossier = opendir($repertoire);
    		$top = 0;
    		echo "<table style='margin:auto;'><tr>";
    		$i = 0;
    		while($fichier = readdir($dossier)){
    			$extension = strrchr($fichier, '.');
    			$extensions = array(".jpg", ".JPG", ".jpeg", ".JPG");
    			if(in_array($extension, $extensions)){
    				$i++;
    				creerMiniature($repertoire, $fichier);
    				echo "<td><a href='".$repertoire.$fichier."'>";
    				echo "<img src='".$repertoire."thumbs/".$fichier."'/></a></td>";
    				if($i >= $colonnes){
    					echo "</tr><tr>";
    					$i = 0;
    				}
    			}
    		}
    		echo "</tr></table>";
    	}
    	
    	function creerMiniature($repertoire, $image, $taille = 150){
    		$tmp_taille = getimagesize($repertoire.$image);
    		$tmp = imagecreatefromjpeg($repertoire.$image);
    		$format = true;
    		if($tmp_taille[0] >= $tmp_taille[1]){
    			$dimention = $tmp_taille[1];
    		}
    		else if($tmp_taille[0] <= $tmp_taille[1]){
    			$dimention = $tmp_taille[0];
    			$format = false;
    		}
    		else{
    			$dimention = $tmp_taille[0];
    		}
    		if($format){
    			$pos_x = ($tmp_taille[0] / 2) - ($dimention / 2);
    			$pos_y = 0;
    		}
    		else{
    			$pos_y = ($tmp_taille[1] / 2) - ($dimention / 2);
    			$pos_x = 0;
    		}
    		$thumb = imagecreatetruecolor($taille, $taille);
    		imagecopyresampled($thumb, $tmp, 0, 0, $pos_x, $pos_y, $taille, $taille, $dimention, $dimention);
    		imagedestroy($tmp);
    		imagejpeg($thumb, $repertoire."thumbs/".$image, 100);
    		imagedestroy($thumb);
    	}
    ?>
    
    Et pour l'utiliser, c'est très simple (dans une page statique) :
    <?php
    include(PLX_ROOT.'/plugins/plxgal.php'); # Appel du script qui va bien 
    afficherImages("data/images/"); # Répertoire ou sont stockées les images
    ?>
    
Connectez-vous ou Inscrivez-vous pour répondre.