webForumDet fria alternativet
Logga in / Bli medlem

sortera bilder i PHP-script

PHP

10 svar · 522 visningar · startad av ullan

Medlem sedan aug. 200442 inlägg
Trådstart#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>
Medlem sedan aug. 2001145 inlägg
#2

Kan du koda i php?

Medlem 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?

Medlem sedan aug. 2001145 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.

Medlem 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?

Medlem sedan aug. 2001145 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?

Medlem sedan aug. 200442 inlägg
#7

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

http://www.misslbk.tk

Medlem sedan aug. 2001145 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.

Medlem 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...

Medlem sedan aug. 2001145 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.

Medlem 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!!!

266 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)