Probleme de resize des thumbnails galerie photo...

Probleme de resize des thumbnails galerie photo... - PHP - Programmation

Marsh Posté le 10-11-2005 à 10:02:19    

salut,
 
voila j'expose dessuite mon probleme:  
 
J'ai télécharger un petit script qui permet facilement de créé un galerie photo. A partir d'un dossier nommé "images" il prend les photo qui se trouvent dedans et crée automatiquement une page HTML avec des thumbnail aligné.
 
Le probleme (c'est pas trop un probleme) c'est que les thumbnails n'apparaissent pas en entier... il apparait que une petite partie de la photo et en plus en 80x50 alors que je voudrais un poil plus grand.
 
Je voudrais que la photo entiere soit vue en thumbnail.
 
Exemple ici : http://justine.franck.free.fr/scri [...] photos.php
 
Merci de m'aider, voici le code de la page qui à l'include pour exécuter le script :

Citation :

<?
include("./bolGallery.php" );
bolGallery("./images/", 7, 90, 85, 1);
?>


 
et la page du script :
 

Citation :

<?php
// Coders : Need help at reducing file URLs expressions according to "current directory" PHP workflow style
 
// Returns a GD image file resource create and its width and height into an array
// Output array : {image resource, image width, image height}
function getImageResource($imageFile) {
 
 // Get image info
 $imageFileInfo = getimagesize($imageFile);
 $dataArray[1] = $imageFileInfo[0];
 $dataArray[2] = $imageFileInfo[1];
 
 // Create a image resource
  if ($imageFileInfo[2] == 1) { $imageFileResource = imagecreatefromgif($imageFile); }
 if ($imageFileInfo[2] == 2) { $imageFileResource = imagecreatefromjpeg($imageFile); }
  if ($imageFileInfo[2] == 3) { $imageFileResource = imagecreatefrompng($imageFile); }
 $dataArray[0] = $imageFileResource;
 
 return $dataArray;
}
 
 
 
// Creates a jpeg image sized as you want focusing randomly at a detail of the reference image
function imageDetailExtract($referenceImage, $thumbnail, $thumbnailWidth, $thumbnailHeight, $thumbnailJpegQuality=150) {
 
 $getImageResource = getImageResource($referenceImage);
 
 // Method to display a image detail
 // Coders : problems with little images (To get rid of it, set those two variables to 0)
 // Coders : could be also enhanced so as to see more details
 $Xposition = round(rand(0, ($getImageResource[1]-$thumbnailWidth)));
 $Yposition = round(rand(0, ($getImageResource[1]-$thumbnailHeight)));
 
 // Create the detail image
 $thumbnailResource = imagecreatetruecolor($thumbnailWidth,$thumbnailHeight);
 imagecopy($thumbnailResource, $getImageResource[0], 0, 0, $Xposition, $Yposition, $getImageResource[1], $getImageResource[2]);
 imagejpeg($thumbnailResource, $thumbnail, $thumbnailJpegQuality);
 
 // Destroy image resources
 imagedestroy($getImageResource[0]);
 imagedestroy($thumbnailResource);
}
 
 
 
// Resizes the given image outputting a jpeg image
function resizeImage($referenceImage, $thumbnail, $maxWidth, $maxHeight, $thumbnailJpegQuality=150) {
 
 $getImageResource = getImageResource($referenceImage);
 
 // Recompute size for fitting (to be validated)
 if( $getImageResource[1] > $getImageResource[2]) { $maxHeight = round(($getImageResource[2]/$getImageResource[1])*$maxWidth); }
 else { $maxWidth = round(($getImageResource[1]/$getImageResource[2])*$maxHeight); }
 
 // Create resized image
 $thumbnailResource = imagecreatetruecolor($maxWidth,$maxHeight);
 imagecopyresized($thumbnailResource, $getImageResource[0], 0, 0, 0, 0, $maxWidth, $maxHeight, $getImageResource[1], $getImageResource[2]);
 imagejpeg($thumbnailResource, $thumbnail, $thumbnailJpegQuality);
 
 // Destroy image resources
 imagedestroy($getImageResource[0]);
 imagedestroy($thumbnailResource);
}
 
 
 
// Date sorting method
function mtime_sort($b, $a) {  
 
 if (filemtime($a) == filemtime($b)) {
  return 0;  
 } else {
  return (filemtime($a) < filemtime($b)) ? -1 : 1;  
 }
}  
 
 
 
 
// Creates bolGallery files and returns the HTML layout source string
function bolGalleryCreate($imagesList, $referenceImagesDirectory, $tableColumnsNb, $thumbnailWidth, $thumbnailHeight, $switchClassic=false) {
 
 // Build gallery HTML source
 $HTML = "";
 
// Bolgallery Javascript popup function
$bolGalleryPopup = "<!-- Javascript popup window function -->
<SCRIPT type=\"text/javascript\">
 
function bolGalleryPopup(imageFile, width, height, title){
 
 var html = '<title>' + title + ' - Click to close </title><body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onclick=\"javascript:window.close()\"><img src=\"' + imageFile + '\" alt=\"Click to close\"></body>';
 var popup = window.open(imageFile, '_blank', 'width=' + width+ ', height=' + height + ', status=no');
 popup.document.write(html);
 popup.focus();
}
</SCRIPT>\n\n";
$HTML .= $bolGalleryPopup;
 
 
 // Build the HTML table to display all the thumbnails
 $HTML .= "<!-- www.le-bazar-de-jeje371.com -->\n<TABLE border=0 cellspacing=1 cellpadding=0>\n\t<TR valign=\"top\">\n";
 $table_i=0;
 
 foreach($imagesList as $currentImage) {
 
    // (Re)build thumbnail url string
    $referenceImageName = str_replace($referenceImagesDirectory, "", $currentImage);
    $thumbnail = ($referenceImagesDirectory . "bolGallery/thumbnail_" . $referenceImageName);  
 
    // Get reference image file info
    $referenceImageInfos = getimagesize($currentImage);
    $referenceImageWidth = $referenceImageInfos[0];
    $referenceImageHeight = $referenceImageInfos[1];
 
    // Generate the thumbnail image if doesn't exist
    if(! file_exists($thumbnail)) {
     
     // Generate mode style thumbnail
     if($switchClassic) { resizeImage($currentImage, $thumbnail, $thumbnailWidth, $thumbnailHeight); }  
     else { imageDetailExtract($currentImage, $thumbnail, $thumbnailWidth, $thumbnailHeight); }
    }
 
    // Display the thumbnail image and set a popup link to the big one
    $alt = str_replace("_", " ", substr($referenceImageName, 0, -4));  
    $HTML .= "\t\t<TD align=\"center\">\n\t\t\t<A href=\"" . $currentImage . "\" onClick=\"bolGalleryPopup(this.href, " . $referenceImageWidth. ", " . $referenceImageHeight . ", '" . $alt . "'); return(false);\" target=\"_blank\">\n"; // target attribute to be tested
    $HTML .= "\t\t\t\t<IMG src=\"" . $thumbnail . "\" title=\"" . $alt . "\" border=0>\n";
    $HTML .= "\t\t\t</A>\n\t\t</TD>\n";
     
    // HTML table next line evaluation
    $table_i++;
    if (($table_i % $tableColumnsNb) == 0) {
     $HTML .= "\t</TR>\n\t<TR valign=\"top\">\n";
    }
 }
 $HTML .= "\t</TR>\n\t<TR>\n\t\t<TD colspan=" . $tableColumnsNb . ">\n\t\t\t<FONT size=1>Rouge Passion <A href=\"http://www.le-bazar-de-jeje371.com\" target=\"_blank\">bolGallery</A></FONT>\n\t\t</TD>\n\t</TR>\n"; // Thanks not to delete this line
 $HTML .= "</TABLE>\n<BR>\n<!--End BolGallery-->\n\n";
 return $HTML;
}
 
 
// Main function. Handles bolGalleryCreate(). Call it on your php pages where you want it build a gallery.
// Loads static page or lists reference images directory and launchs gallery creation
function bolGallery($referenceImagesDirectory, $tableColumnsNb, $thumbnailWidth, $thumbnailHeight, $switchClassic=false) {
 
  $staticPage = ("./" . str_replace(".", "", str_replace("/", "", $referenceImagesDirectory)) . "_bolGalleryStaticPage.html" );
   
  // Recreate the gallery if there was any modification
  if((!file_exists($staticPage)) or (filemtime($referenceImagesDirectory) > filemtime($staticPage))) {
 
   // Builds an array (sorted by date) of image files from given directory
   if (is_dir($referenceImagesDirectory)) {  
 
    // Create the thumbnails directory if doesn't exist
    if (! is_dir($referenceImagesDirectory."bolGallery" )) {
     mkdir($referenceImagesDirectory."bolGallery", 0755);
    }
 
    // Check the reference images directory (Doesn't scan subdirectories)
    $handle=opendir($referenceImagesDirectory);
    while ($file=readdir($handle)) {
 
     if (is_file($referenceImagesDirectory.$file)) {
 
      // Check if the file is an image
      $extension = strtolower(substr(strrchr($file,  "." ), 1));
      $supportedExtensions = array("jpg", "jpeg", "gif", "png" );
   
      if (in_array($extension, $supportedExtensions) and ($file[0] != "#" )) { // Also checks whether file is marked by a "#"
   
       // Add this file to the image files array
       $imagesList[] = $referenceImagesDirectory.$file; // Should not add $referenceImagesDirectory in the array, could be added later
      }
     }
    }
    closedir($handle);
 
    // Sort image files array by date with "mtime_sort" method
    // Coders : could enable the user to choose between multiple file sorting
    @usort($imagesList, "mtime_sort" ) or die("There are no image in <b>" . $referenceImagesDirectory . "</b> to run bolGallery." );
 
   } else { die("<b>" . $referenceImagesDirectory . "</b> does not exist or is not a valid directory url. Cannot run bolGallery." ); }
 
   // Build gallery
   $HTML = bolGalleryCreate($imagesList, $referenceImagesDirectory, $tableColumnsNb, $thumbnailWidth, $thumbnailHeight, $switchClassic);
 
   // Bake also bolGallery HTML source output to file
   $session = fopen($staticPage, "w" ); // "r+" ?
   fputs($session, "<!-- BolGallery baked HTML page -->\n".$HTML);
   fclose($session);
 
  }
 
/* Won't work
 
  // Load static page (the old one or the last created above)
  require($staticPage) or die("<b>" . $staticPage . "</b> does not exist." );
*/
 
  $pageString = file_get_contents($staticPage);
  echo $pageString;
}
?>


Message édité par JeJe371 le 10-11-2005 à 10:03:19

---------------
Ventes Hardware - Ventes Divers - Feed-Back
Reply

Marsh Posté le 10-11-2005 à 10:02:19   

Reply

Marsh Posté le 10-11-2005 à 14:07:50    

C'est pas dans les pratique de ce forum d'aider à débugguer un script qui n'est pas fait par l'auteur du message.
Mais si tu veux t'en sortir, ca serait peut être bien de lui spécifier quel type de miniature tu veux (6 éme paramettre de la fonction) vu que par défaut, c'est juste un bout d'image qui est utilisé. A toi de lire ce code pour savoir ce qu'il faut y mettre.

Reply

Marsh Posté le 21-11-2005 à 11:41:29    

Si tu n'as pas déjà trouvé la réponse, il faut ajouter l'argument 1 à la fonction bolGallery().
Soit bolGallery("./images/", 5, 80, 50, 1) où 5 est le nombre de colonnes de l'album, 80 la largeur de la miniature, 50 sa hauteur (tu mets ce que tu veux), et 1 ou 0 pour le mode normal ou créatif (par défaut 0, miniatures partielles).
Pour régler les espaces entre les miniatures, édite bolGalleryCreate() et modifie le tag HTML <TABLE> avec par ex. le cellspacing à 2.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed