Avatar billede superwulff Nybegynder
08. juli 2007 - 14:39 Der er 9 kommentarer og
1 løsning

Script der viser thumbs af dir

Hej.

Jeg vil prøve at lave et script til min hjemmeside så jeg kan lægge de billeder jeg tager på min sommerferie ind efterhånden som jeg tager dem.

Jeg har styr på login og upload funktionen, men jeg mangler et script der viser indholdet.

Det skal lige siges at jeg har prøvet mange forskellige scripts fra div. steder på nettet, men ingen af dem var det jeg præcist søgte efter.

Det, det skal kunne: Scriptet skal vise de billeder der bliver lagt ind, altså ligesom en gæstebog der ikke bruger database men læser filerne fra et dir. Det her skal bare vise thumbs (gerne som links så man kan se dem store ved at klikke på dem). Nogen der ved hvordan man gør det? eller som kan henvise mig til et sted man kan lære det?

På forhånd tak.

-Swulff
Avatar billede nemlig Professor
08. juli 2007 - 16:31 #1
Jeg har et lille program, som automatisk genererer thumbnails af de billedfiler, som ligger i en bestemet mappe.
Det må du gerne få.
Avatar billede nemlig Professor
08. juli 2007 - 16:41 #2
//Fil 1:
<html>
<head>

<style type="text/css">
a {text-decoration:none}
a:link    { color: #ffffff; text-decoration: none; }
a:visited { color: #ffffff; text-decoration: none; }
a:active  { color: #ffffff; text-decoration: none; }
a:hover  { color: #ffffff; text-decoration: none; }

.form {
    background-color: #cfcfcf;
    border-color: #000000;
    color: #000000;
    border-bottom: 1px solid;
    border-top: 1px solid;
    border-left: 1px solid;
    border-right: 1px solid;
    font-family: Verdana;
    font-size: 10px;
    cursor: hand;
    cursor: pointer;
}
</style>

</head>

<?
//Denne fil skal lægges i samme mappe som billed-filerne. Når filen indlæses genererer den automatisk thumbnails af alle billedfiler.
//På FDF-serveren må billedfilerne ikke være større end
//Navnet på billed-filen må ikke indeholde mellemrum og skal overholde almindlige regler for filnavne på hjemmesideservere
//Husk at ændre skriverettighederne på den mappe filen her ligger i
// VARIABLERNE DEFINERES I FILEN "HEAD.PHP"
require 'head.php';


### --- PAS PA MED AT RETTET NOGET HERUNDER --- ###
if(!is_dir($thumbnail_mappe)) {mkdir("$thumbnail_mappe", 0777);}

function imageresizejpeg($sourcefile,$maxwidth,$maxheight,$destinationfile) { // funktion til resize eaf jpg-filer

    global $newwidth,$newheight;

  if($img_src=@imagecreatefromjpeg($sourcefile)) {
        copy($sourcefile, $destinationfile);
        $info=@getimagesize($sourcefile);

        if($info[1]>$maxheight || $info[0]>$maxwidth)
        {
        $ratio_height=$maxheight/$info[1];
        $ratio_width=$maxwidth/$info[0];
        $ratio=min($ratio_width,$ratio_height);
        $newwidth=intval($info[0]*$ratio);
        $newheight=intval($info[1]*$ratio);
        $img_dst=imagecreatetruecolor($newwidth,$newheight);
        imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $info[0], $info[1]);
        @imagejpeg($img_dst, $destinationfile);
        imagedestroy($img_dst);
        }
        else
        {
        $newwidth=$info[0];
        $newheight=$info[1];
        }
    @imagedestroy($img_src);
    return true;
    }
    else
    {
    return false;
    }
}

function get_size($info,$maxwidth,$maxheight) { // funktion til beregning af størrelse af ikke-jpg-filer
    global $newwidth,$newheight;

    if($info[1]>$maxheight || $info[0]>$maxwidth) {
        $ratio_height=$maxheight/$info[1];
        $ratio_width=$maxwidth/$info[0];
        $ratio=min($ratio_width,$ratio_height);
        $newwidth=intval($info[0]*$ratio);
        $newheight=intval($info[1]*$ratio);
    return true;
    }
    else
    {
      $newwidth=$info[0];
      $newheight=$info[1];
    }
}

### --- PAS PA MED AT RETTET NOGET HERUNDER --- ###
$handle=opendir('.');
// GO
$piccy=array();
$count=0;
// SCAN THE DIR
//while (($filename = readdir($handle))!==false) {
while ($filename = readdir($handle)) {
  // TYPER FILER DER KAN HENTES
  if (eregi("(\.jpg|\.gif|\.bmp|\.png|\.JPG|\.GIF|\.BMP|\.PNG)$", $filename)) { // hvis fil er en billedfil
    $piccy[$count] = $filename;
    $count++;
  }
}
// LUK DIR
closedir($handle); 
// SORTERE FILERNE
sort($piccy);
reset($piccy);

// VISER STORT IMAGE
if ($_GET['large']){ // hvis large er med som query-string
$large = $_GET['large'];
        echo "<html><head><title>" . $pagetitle ."" . $large . "</title></head><body bgcolor=" . $bg . ">";
  echo '<div align="center">';
// HVIS NAVNET ER SAT TIL AT VISES?
//  if ($name=="1") {echo '<br><font face="verdana" color="white" size="1">Billednavn: ' . $large . '</font>';  }
// FIND FORRIGE OG NÆSTE
$i = 0;
$prev = "";
while ( ($piccy[$i] != $large) && ($i < sizeof($piccy)) ) {
    $prev = $piccy[$i];
    $i++;
}
if ($i == sizeof($piccy)-1) {
    $next = "";
} else {
    $next = $piccy[$i+1];
}
// VIS FORRIGE OG NÆSTE
//echo "<br><br>";

echo '<table width="100%" border=0 cellpadding=2 cellspacing=0><tr><td bgcolor="#333e46" width="35%"><b><font face="verdana" size="2" color="white">' . $pagetitle . '</b></font></td>
<td bgcolor="#333e46" align="center" width="30%">';
echo '<button onclick="location.href=\'?large='.$prev .'\';return false;" class="form">[&lt; &lt;]</button>';
echo "&nbsp;&nbsp;&nbsp;&nbsp;";
echo '<button onclick="location.href=\'?large='.$next .'\';return false;" class="form">[&gt; &gt;]</button>';
echo '</b></font></td>

<td bgcolor="#333e46" align="right" width="35%">';
if ($name=="1") {echo '<font face="verdana" color="white" size="2">Billednavn: ' . $large . '</font>';  }
echo '</b></font></td></tr></table>';

// VIS IMAGE
  echo '<table width="100%" border=0 cellpadding=0 cellspacing=0>';
  echo '<tr>';
  echo '<td valign="middle" align="center">
  <table border=15 bordercolor="#333e46" cellpadding=2 cellspacing=0><tr><td bgcolor="black">
  <a href=' .$filnavn.'><img src="'.$large.'" alt="'.$large.'" border=0></a>
  </td>
  </tr>
  </table>
  </td>';
  echo '<br>';
  echo '</tr></table>';
  echo '<br>';
  echo '<center><button onclick="location.href=\''.$filnavn .'\';return false;" class="form">Tilbage til galleri</button>';


// NO PROBLEMO, LAVER TABLER FOR THUMBNAILS:
} else { // hvis large ikke er med som query-string

// START TABLE SAET cellpadding, cellspacing, colors, 
echo '<html><head><title>'. $pagetitle .'</title>';
echo '<head>';
echo "<body bgcolor=" . $bg . ">";
echo '<table width="100%" border=0 cellpadding=1 cellspacing=0><tr><td bgcolor="#333e46"><b><font face="verdana" size="5" color="white"><a href="'.$sti .'">' . $pagetitle . '</a></b></font></td><td bgcolor="#333e46" align="right"><a href="'.$sti .'"><img src="' .$grafiksti .'fdflogo_lille.gif" border=0></a></td></tr></table>';
echo '<br><b><center><font face="verdana" size="1" color="white">Klik på et billede for at vise det i stort format!</b></font></center><br>';
echo '<table width="100%" border=0 cellpadding=3 cellspacing=0>';
echo '<tr>';
// FORDI <TD> DET ER SAT AF BRUGER, LAV THE PERCENTAGES:
$divider=ceil(100/$td);
if (($divider*$td)>100) $divider--;

// HENT IMAGES
for ($l=0;$l<=sizeof($piccy)-1;$l++){
  $isend = strpos((($l)/$td),".");
  if (!$isend && ($l!=0)){
  echo "</tr>\n<tr><td colspan=$td><br></td></tr>\n<tr>\n";
  }
  if ($l==0){
  echo "\n";
  }
  // START <TD>
  echo '<td width="'.$divider.'%" valign="middle" align="center">';
  // FA STORT BILLEDE (IF SELECTED)
  echo '<table border=8 bordercolor="#333e46" cellpadding=2 cellspacing=0><tr><td bgcolor="black">';
  echo "<a href=\"$PHP_SELF?large=" . $piccy[$l] . "\">";

  // VISER THUMBNAILS
  $thumb_mappe = $thumbnail_mappe . "/"; // vi sætter en skråstreg efter undermappens navn
  $thumb_name = $thumb_mappe . "thumbnail_" . $piccy[$l];

 
  if (eregi("(\.jpg|\.JPG)$", $piccy[$l])) { // hvis filtype er jpg
    if(!file_exists($thumb_name)) {
  imageresizejpeg($piccy[$l],$maxwidth,$maxheight,$thumb_name) ;
    } else {
  $size=getimagesize($piccy[$l]); // laver et array med width og hight
  get_size($size,$maxwidth,$maxheight) ;
    } 
  echo '<img src="' . $thumb_name . '" alt="' . $piccy[$l] . '" border=0 width="' . $newwidth .'" height="' . $newheight .'"></a></td></tr></table>';
  } else { // hvis filtype ikke er jpg
  $size=getimagesize($piccy[$l]); // laver et array med width og hight
  get_size($size,$maxwidth,$maxheight) ;
  echo '<img src="' . $piccy[$l] . '" alt="' . $piccy[$l] . '" border=0 width="' . $newwidth .'" height="' . $newheight .'"></a></td></tr></table>';
  }
  // OM NAVNET ER SAT TIL AT BLIVE VIST?
  if ($name=="1") {
  echo '<center><font face="verdana" color="white" size="1">' . $piccy[$l] . '</center></font>';
  }
  echo '</td>';
  echo"\n";
} // for-løkken slutter
  echo '</tr></table></div>';
  echo '<br><center><button onclick="location.href=\''.$sti .'\';return false;" class="form">Tilbage til oversigt</button>';

} // else slutter
  echo '<br><br><br><div align="center"><font face="verdana" size="1"></a></font></div></body></html>';
?>

//FIL 2 = head.php
<?php

### ---  HERFRA SKAL RETTES HVER GANG --- ###

// VIS TITLEN PA SIDEN
$pagetitle='Kredsweekend 2006 - Mellerup';

//Sti og fil til fotooversigten (bruges på oversigtens tilbage-knap)
//Sti og fil kan også være '../../landslejr2006.html'
$sti='../fotoarkiv.html';

### ---  HERTIL SKAL RETTES HVER GANG --- ###



//Sti til grafikfil på thumbnailoversigten
$grafiksti='../';

// Thumbnails max størrelse
$maxwidth = 225;
$maxheight = 150;

// Thumbnail-mappens navn
$thumbnail_mappe = "thumbs";

// NUMRE AF <TD> PR. <TR> ( PA DANSK/ENGELSK: COLUMNS PA SIDEN :-) )
$td='4';

// BAGGRUNDSFARVE
$bg='#404d57';

// SKAL NAVNES VISES PÅ BILLEDET
$name='1'; // 1 = yes, 0 = no

//Navnet på denne fil
$filnavn = 'fotothumb.php';
?>
Avatar billede nemlig Professor
08. juli 2007 - 16:43 #3
Ovenståender er 2 filer, som placeres i samme mappe som billedfilerne.
Mappen som filerne ligger i, skal skrivbare (Fjern skrivebeskyttelsen).
Avatar billede nemlig Professor
08. juli 2007 - 16:45 #4
Eksempel kan ses her:
http://fdf.dk/esbjerg1/fotoarkiv/arkiv/moegeloe2003/fotothumb.php
Der er dog problemer med serveren i dag, hvorfor du kan oplever ustabilitet.
Avatar billede superwulff Nybegynder
08. juli 2007 - 18:30 #5
Super. Tak for det.

-swulff


p.s. har du selv skrevet det?
Avatar billede superwulff Nybegynder
08. juli 2007 - 18:32 #6
Lige en ting.

Skal scriptet være i en fil eller seperate?

-swulff
Avatar billede superwulff Nybegynder
08. juli 2007 - 18:34 #7
Aahh.. så først nu //Fil 1 og //Fil 2
Avatar billede nemlig Professor
08. juli 2007 - 18:49 #8
Jeg har kun skrevet lidt af det. Jeg fandt det her på Eksperten for et par år siden, og så har jeg efterfølgende foretaget en række rettelser.
Spørg bare, hvis der er noget, som driller.
Avatar billede superwulff Nybegynder
08. juli 2007 - 19:02 #9
okay..

smider du et svar?

-swulff
Avatar billede nemlig Professor
08. juli 2007 - 19:10 #10
Svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester