webForumDet fria alternativet

sortera bilder i PHP-script

10 svar · 520 visningar · startad av ullan

ullanMedlem sedan aug. 200442 inlägg
#1

Hej! Har hittat ett PHP-script som skapar thumbnails och som då man klickar på dem öppnar ett större fönster i en popup-ruta. Därifrån kan man sedan navigera framåt och bakåt bland bilderna. (se länk som det är nu http://www.vallnet.nu/mp00361-p1/galleri.htm )

Denna php-fil öppnas i en I-frame.

Problemet är att bilderna behöver sorteras in i olika underkategorier efter årtal. Så som det är nu hamnar de ju huller om buller. En idé vore ju att döpa bilderna till 2004_1.jpg, 2004_2.jpg etc, så att de hamnar i rätt ordning. Men jag skulle ändå behöva förtydliga det genom att skriva årtalet över bilderna. Är det någon som vet hur man kan lösa det? Jag skulle vilja att det såg ut som en gammal variant som jag hade tidigare som kodades i Javascript. (http://www.vallnet.nu/mp00361-p1/galleri2.htm )
Men med den lyckades jag aldrig med framåt-bakåt knappar i popupen och den var svårare att uppdatera.

Skulle även vilja att popup-rutan anpassade sig till bildernas storlek, så man slipper scrolla, just nu så är storleken fixerad. Tacksam för hjälp!!

Koden i php-filen ser ut så här:

<?
$doc_title = "Album generated by Simple Photo Album";  
$columns=9;                                       //number of images per line 
$size = GetImageSize($currfile); 
$width = 45; 
$height = 45;             	//ratio imageSize / thumbnailImageSize 
$quality=70;                     								             //thumbnail image quality (0: worst to 100:best)
$scriptname= "index.php";    									//filename of this script 
$thumb_dir = "thumb";        									//directory created to stored small images
$thumb_prefix = "thumb_";    									//prefix for generated images

echo ' 
<html> 
<head> 
<title>Lotta Wästerlid</title> 
'; 

if (!isset($_GET['ishome']) || $_GET['ishome'] != 1) { 
echo ' 
<style type="text/css"> 
body {   
  scrollbar-face-color: #FFFFFF; 
  scrollbar-highlight-color: #FFFFFF; 
  scrollbar-3dlight-color: #FFFFFF; 
  scrollbar-darkshadow-color: #FFFFFF; 
  scrollbar-shadow-color: #FFFFFF; 
  scrollbar-arrow-color: #CC3333; 
  scrollbar-track-color: #FFFFFF; 
} 
</style> 
'; 
} 

echo ' 
</head> 
<body bgcolor=white> 
<center><P><BR><BR> 

'; 

$mydirectory= '.';          //directory in which images are fetched 
$counter=0;
$nbfiles = 0;
$currfile =  "";
$filestab[0] =  "";

$handle=opendir($mydirectory);

//create a directory for thumbnail images
if (! is_dir($thumb_dir))
{
   mkdir($thumb_dir, 0777);
}

while ($currfile = readdir($handle))  
{
// We get the extension of the current file and keep only image files 
   $extension= strtolower(substr( strrchr( $currfile,  "." ), 1 ));  
   if ($extension== "gif" || $extension== "jpg" || $extension== "jpeg" ||
       $extension== "png")
   {
      $nbfiles++;
      $currfile = trim($currfile);
      $filestab[$nbfiles] = $currfile;

      if ($ishome ==  "")
      {
         $size = GetImageSize($currfile);
         $width = $size[0] / $ratio;
         $height = $size[1] / $ratio;
         $format = $size[2]; //1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP

        $currthumbfile = "./" . $thumb_dir . "/" . $thumb_prefix . $currfile;
        if (! file_exists($currthumbfile)) 
        { 
           switch ($format) { 
             case 1: $im_src = imagecreatefromgif($currfile);break; 
             case 2: $im_src = imagecreatefromjpeg($currfile);break; 
             case 3: $im_src = imagecreatefrompng($currfile);break; 
           } 

           if (!$im_src) 
           { 
               $currthumbfile = $currfile; 
           } 
           else 
           { 
              $img_dst = imagecreatetruecolor($width, $height); 
              imagecopyresampled ($img_dst, $im_src, 0, 0, 0, 0, $width, $height, imagesx($im_src), imagesy($im_src)); 

              Imagejpeg($im_src, $currthumbfile, $quality); 
              ImageDestroy($im_src); 
           } 
        } 

        $currfile = str_replace(" ","%20",$currfile); // Allow filenames with space characters
        $currthumbfile = str_replace(" ","%20",$currthumbfile); // Allow filenames with space characters

        echo  "<A HREF='#' onclick=\"window.open('$scriptname?ishome=1&filename=$currfile&filenumber=$nbfiles', '', 'width=400, height=500, scrollbars=yes, resizable=yes');return false;\">\n"; 

         echo  "<IMG SRC=$currthumbfile";
         $currfile = str_replace("%20"," ",$currfile); // Clean display of filenames with space characters
         echo " alt=\"Enlarge $currfile\" style=\"border:none\" />\n"; 
         $currfile = str_replace(" ","%20",$currfile);   //Clean display of filenames with space characters
         echo  "</A>\n";
         $counter++;
         if ($counter == $columns)
         {
            $counter = 0;
            echo  "<P><P><BR>";
         }
      }
   }
}
closedir($handle);

if ($ishome == 1)
{
   echo  "<P>\n";
   $filename = str_replace(" ","%20",$filename);   // Allow filenames with space characters
   $filename = stripslashes($filename);   // Allow filenames with ' characters
   echo  "<IMG SRC=$filename>\n";

   echo  "<P><BR>\n\n";

   if ($filenumber != 1)
   {
      $prevnumber = $filenumber - 1;
      $filestab[$prevnumber] = str_replace(" ","%20",$filestab[$prevnumber]);   // Allow filenames with space characters
      echo  "[<A HREF=$scriptname?ishome=1&filename=$filestab[$prevnumber]&filenumber=$prevnumber>";
      echo  " << Tidigare</A>]  \n";
   }

  
   echo  "  \n" ;
   if ($filenumber != $nbfiles)
   {

      $nextnumber = $filenumber + 1;
      $filestab[$nextnumber] = str_replace(" ","%20",$filestab[$nextnumber]);   // Allow filenames with space characters
      echo  "[<A HREF=$scriptname?ishome=1&filename=$filestab[$nextnumber]&filenumber=$nextnumber>";
      echo  "Nästa >></A>]\n";
   }

   echo "\n\n";
}
?>

<P><P><P><P>

</center>
</html>
Dies_IraeMedlem sedan aug. 2001159 inlägg
#2

Kan du koda i php?

ullanMedlem sedan aug. 200442 inlägg
#3

Jag kan endast pyttelite. Skriptet har jag hittat på nätet. Tror du att det är väldigt komplicerat att göra som jag hade tänkt?

Dies_IraeMedlem sedan aug. 2001159 inlägg
#4

Nej, vad du kan göra är att skapa kataloger med årtals namn som då blir sorterade

Tex skapa 2002, 2003, 2004, 2005 kataloger lägga in dom bilder du har under respektive och sen loopa igenom alla. Kan skriva lite snabbt hur du kan gå tillväga men de kommer nog inte fungera eftersom jag inte testar de utan bara skriver här och nu.

<?

function printimages($path) {
	$dh = opendir($path);
	if (!$dh) return;
	$breakcount = 0;
	while($file = readdir($dh)) {
		if ($file == "." && $file == "..") continue;
		$image = "$path/$file";
		if (is_file($image)) {
			// En bild som ligger i en subkatalog.
			?>
			<img height="100" width="100" src="<?= $path; ?>">
			<?		
			$breakcount++;
			if ($breakcount > 5) {
				echo "<br>";
				$breakcount = 0;
			}
		}
	}
	closedir($dh);
}

function printthumbs($dir) {

	$dh = opendir($dir);
	if (!$dh) return;

	while($file = readdir($dh)) {
		$path = "$dir/$file";
		if ($file != "." && $file != ".." && is_dir($path)) {
			// En katalog i images (troligsvis den första året du har)
			echo "År: $file<br>";
			printimages($path);
		}

	}
	closedir($dh);

}

printthumbs("./images");

?>

Nått sådant.

Du skapar alltså en katalog som heter images. I den katalogen skapar du åren

"./images/2005" I den lägger du bilder som gjordes de året (såklart)

Sen kommer scriptet (kanske) att kolla alla kataloger i images, skriva ut deras namn, och sen generera html för thumbs på dom bilder som ligger i den katalogen.

ullanMedlem sedan aug. 200442 inlägg
#5

Tack för ditt svar! Testade lite snabbt men den hittade inte bilderna. Måste jag lägga index.php filen i images-mappen eller kan den ligga utanför?

Dies_IraeMedlem sedan aug. 2001159 inlägg
#6

index.php ska ligga utanför images (annars får du ändra raden längst ner från "./images" till "." Skriver den ut År: XXXX ? eller inget alls?

ullanMedlem sedan aug. 200442 inlägg
#7

Så här ser det ut! (under galleri-länken)

http://www.misslbk.tk

Dies_IraeMedlem sedan aug. 2001159 inlägg
#8

Ah, självklar, Använde fel variable i image taggen. Kanske funkar nu?

function printimages($path) {
	$dh = opendir($path);
	if (!$dh) return;
	$breakcount = 0;
	while($file = readdir($dh)) {
		if ($file == "." && $file == "..") continue;
		$image = "$path/$file";
		if (is_file($image)) {
			// En bild som ligger i en subkatalog.
			?>
			<img height="100" width="100" src="<?= $image; ?>">
			<?		
			$breakcount++;
			if ($breakcount > 5) {
				echo "<br>";
				$breakcount = 0;
			}
		}
	}
	closedir($dh);
}

Desutom kan du lägga ett <br> i echo år grejen eller nått för att få de lite snyggare, men sådant kan du ju fixa hur du vill sen.

ullanMedlem sedan aug. 200442 inlägg
#9

Ja nu börjar det likna något! Det här är jättebra eftersom nu är det mycket enklare att uppdatera. Nu måste jag bara få dem att bli klickbara så att en större bild visas i en popup-ruta som man kan navigera framåt bakåt i. Går det att väva ihop detta script som jag fick av dig med det som jag hade tidigare på något sätt? Eller måste man skriva om allt från början? Tänkte att man typ kan klistra in den biten jag fick av dig eller nåt...vet bara inte var...

Dies_IraeMedlem sedan aug. 2001159 inlägg
#10

De blir lite värre. Har inte läst skriptet du tog med men de brukar vara lättast att skriva om.

Kan nog hjälpa dig någon gång med det, men orkar inte för tillfället. Att få en popup för att visa original bilden kan du nog fixa själv, men att kunna hoppa fram och tillbaka är lite värre.

ullanMedlem sedan aug. 200442 inlägg
#11

Ok. Jag får göra en enklare variant så länge. Tack så hemskt mycket för all hjälp!!!

132 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
129 ms — hämta tråd, inlägg och bilagor (db)