Gå til innhold

Anbefalte innlegg

Heisann.. På min hjemmeside har jeg ett upload script som lar folk laste opp bilder. Folk kan også se bildene ved å trykke på dem. Men jeg vil ha det sånn at det vises små minatyrbilder av de store bildene, og ved å trykke på dem får man dem store. Dette i tillegg til opplastingsskriptet.. Hjemmesiden min er å finne her

Og om du ikke trenger å se helheten på siden, bare skript-filen og opplastingen kan du klikke her : her

Lenke til kommentar
Videoannonse
Annonse

Her er et veldig enkelt et.

 

 

<html>
<head>
<title>Bilder</title>
</head>
<body>
<h1>Bilder</h1>
<hr>
<?php
if(!isset($_GET["dir"])) {
 print "Oversikt over album: <br>";
 // Variabel som skal si om en mappe har bilder eller ikke
 $hasimage = false;
 if ($handle = opendir('.')) { // åpner gjeldende mappe (som scriptet er i)
   while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != ".." && is_dir($file)) { // Ser bort fra . og .. og sjekker om filen er en katalog
         if($dirhandle = opendir($file)) { // åpner katalogen 
           while(false !== ($subdir = readdir($dirhandle))) { //leser katalogen
             if($subdir != "." && $subdir != ".." && strpos($subdir, ".jpg")) { //Sjekker om det er jpg filer i katalogen
               $hasimage = true; // setter den til sann, hvis det er bilder i mappen
             }
           }
         }
         if($hasimage) $dir[] = $file; // legger mappen i array, dersom det har bilder ($hasimage=true)
       //$dir[] = $file;
        //echo "$teller. <a href='?dir=$file>$file</a><br>";
        //$teller++;
      }
   }
  closedir($handle);
 }
 //Skriver ut mappene som inneholder bilder
 for($i=0;$i<count($dir);$i++) {
   echo ($i+1).". <a href='?dir=".$dir[$i]."'>".$dir[$i]."<br>";
 }
}
else {
 $dir = $_GET["dir"];
 if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && strpos($file, ".jpg")) {
       $image[] = $file;
 //           echo "<img src='$file' alt='$file' title='$file'>\n";
        }
    }
    closedir($handle);
 }
 $bildenr = (isset($_GET[id]))?$_GET["id"]:0;
 //........................................
 $limit = 4;
 $start= $bildenr-$limit;
 $stopp = $bildenr+$limit;
 if($start<0) {
         $start=0;
 	$stopp=$limit*2;
 }
 if($stopp>count($image)) {
         $stopp=count($image);
 }
 if($start>0) echo "[<a href='?id=0'>1</a>] ... ";
 for($i=$start;$i<$stopp;$i++) {
         if($i!=$bildenr) {
                 if(file_exists("thumbs/t_".$image[$i])) {
                   echo " <a href = '?dir=$dir&id=$i'><img src='thumbs/t_".$image[$i]."' alt='$i' title='$i' style='border: 2px solid #FFF;'></a> ";
                 }
                 else {
                   echo " <a href = '?dir=$dir&id=$i'>[$i]</a>";
                 }
         }
         else {
                 if(file_exists("thumbs/t_".$image[$i])) {
                   echo " <img src='thumbs/t_".$image[$i]."' style='border: 2px solid #f33' alt='$i' title='$i'> ";
                 }
                 else {
                   echo "[$i]";
                 }
         }
 }
 if($stopp <= count($image)-1) echo " ... [<a href='?dir=$dir&id=".(count($image)-1)."'>".count($image)."</a>]";
 echo "<hr>";
 echo "<div style='height: auto; width:auto;'>";
 // ........................................
 //Sjekk om Forrige bilde link skal vises
 if($bildenr > 0) {
 	echo "[<a href='?dir=$dir&id=".($bildenr-1)."'>Forrige bilde</a>] ";
 }
 //Sjekk om neste bilde link skal vises
 if($bildenr < count($image)-1) {
 	echo " [<a href='?dir=$dir&id=".($bildenr+1)."'>Neste bilde</a>] ";
 }
 print "<p>";
 print "<img src='$dir/".$image[$bildenr]."' alt='".$image[$bildenr]."' style='margin-right: 50px; float:left;'>";
 //print "</p>";
 print "</div>";
 $limit = 8;
 $start= $bildenr-$limit;
 $stopp = $bildenr+$limit;
 if($bildenr-$limit<0) {
 	$start=0;
 	$stopp=$limit*2;
 }
 if($bildenr+$limit>count($image)) {
 	$stopp=count($image);
 }
 if($start>0) echo "1. [<a href='?dir=$dir&id=0'>".$image[0]." </a>]<br>...<br>";	
 for($i=$start;$i<$stopp;$i++) {
 	if($i!=$bildenr) {
   echo ($i+1).". [<a href = '?dir=$dir&id=$i'>".$image[$i]."</a>] <br>";
 	}
 	else {
   echo ($i+1).". [".$image[$i]."] <br>";
 	}
 }
 if($stopp < count($image)) echo " ...<br> ".count($image).". [<a href='?dir=$dir&id=".(count($image)-1)."'>".$image[count($image)-1]."</a>] <br>";
}  
 ?>
</p>
</div>
<hr>
</body>
</html> 

 

 

Dette scriptet søker gjennom alle mapper som ligger i den katalogen som scriptet ligger i. Finner den noen med bilder i, blir de listet opp med link. Trykker man på linken, får man sett bildene som ligger i den mappen.

 

For å lage thumbnails, kan du bruke dette scriptet, som legges i samme katalog som bildene:

 

 

<?
if ($handle = opendir('.')) {
  while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != ".." && strpos($file, ".jpg")) {
            $image[] = $file;
//           echo "<img src='$file' alt='$file' title='$file'>\n";
      }
  }
  closedir($handle);
}
foreach ($image as $bilde) {
$thumbname = "thumbs/t_".$bilde;
if(file_exists($thumbname)) {
 echo "$thumbname already exists ! <br>";
//	continue;
}
else {
 $thumbwidth=100;
 $thumbheight=100;
 list($image_width, $image_height) = getimagesize($bilde);
 if($thumbwidth && ($image_width < $image_height)) {
 	$thumbwidth = ($thumbheight / $image_height)*$image_width;
 }
 else {
 	$thumbheight = ($thumbwidth / $image_width) * $image_height;
 }
 $image_p = imagecreatetruecolor($thumbwidth, $thumbheight);
 $image_d = imagecreatefromjpeg($bilde);
 imagecopyresampled($image_p, $image_d, 0, 0, 0, 0, $thumbwidth, $thumbheight, $image_width, $image_height);
 imagejpeg($image_p, $thumbname, 100);
 echo "$thumbname created !! <br>";
}
}
 

?>

 

 

Forutsetter at du lager en katalog som heter thumbs med skriverettigheter. Scriptet lager småbilder av alle bilder i bilde-katalogen, og legge i thumbs katalogen med "t_" foran navnet på filen

 

Du kan ganske enkelt endre ting og tang til ditt eget ønske. Dette er bare noe jeg kjapt lagde engang for å vise noen bilder i all hast.

 

Lag en funksjon som scanner en katalog etter bilder. Er det bilder, blir den linket opp som et "album". Da kan du ha underalbum i flere nivåer...

 

EDIT: Endret på scriptet, til å omhandle flere kataloger.

Endret av kakkle
Lenke til kommentar

ooopsan... Glemte visst å endre det etter å ha endret til bruk av mapper:

 

Finn denne delen i scriptet som viser bildene:

         if($i!=$bildenr) {
                 if(file_exists("thumbs/t_".$image[$i])) {
                   echo " <a href = '?dir=$dir&id=$i'><img src='thumbs/t_".$image[$i]."' alt='$i' title='$i' style='border: 2px solid #FFF;'></a> ";
                 }
                 else {
                   echo " <a href = '?dir=$dir&id=$i'>[$i]</a>";
                 }
         }
         else {
                 if(file_exists("thumbs/t_".$image[$i])) {
                   echo " <img src='thumbs/t_".$image[$i]."' style='border: 2px solid #f33' alt='$i' title='$i'> ";
                 }
                 else {
                   echo "[$i]";
                 }
         }

Bytt den ut med denne:

if($i!=$bildenr) {
                 if(file_exists($dir."/thumbs/t_".$image[$i])) {
                   echo " <a href = '?dir=$dir&id=$i'><img src='$dir/thumbs/t_".$image[$i]."' alt='$i' title='$i' style='border: 2px solid #FFF;'></a> ";
                 }
                 else {
                   echo " <a href = '?dir=$dir&id=$i'>[$i]</a>";
                 }
         }
         else {
                 if(file_exists($dir."/thumbs/t_".$image[$i])) {
                   echo " <img src='$dir/thumbs/t_".$image[$i]."' style='border: 2px solid #f33' alt='$i' title='$i'> ";
                 }
                 else {
                   echo "[$i]";
                 }
         }

Dette vil vise thumbnails istedetfor de tallene øverst. Så fremst thumbnails finnes.

 

EDIT: Som du ser, så glemte jeg å ta hensyn til hvilken mappe man så på når scriptet sjekker om thumbnails finnes.

Hvis du vil at det første bildet skal vises ved siden av mappenavnet, så er det en ganske grei oppgave å få til. Overlater det som en liten oppgave til deg ;)

/k

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...