Avatar billede krestian Nybegynder
04. maj 2008 - 16:13 Der er 8 kommentarer og
1 løsning

Thumbnails af flere billeder via gdlib

Hej alle,

Er der nogen som kan vise mig et script som via gdlib danner en thumbnail ud fra x antal billeder i en mappe på serveren! Thumbnails skal vises i browseren.

Der skal altså vises en thumbnail for hvert billede i den pågældende mappe.
Avatar billede nemlig Professor
04. maj 2008 - 17:21 #1
Jeg har lavet dette lille galleri:

http://fdf.dk/esbjerg1/fotoarkiv/arkiv/lille2006/fotothumb.php

Systemet laver selv alle thumbnails udfra billederne i mappen.

Er du interesseret i koden, så må du gerne få den.
Avatar billede krestian Nybegynder
04. maj 2008 - 18:03 #2
Hej nemlig,

Det ser fint ud.

Jeg vil meget gerne have din kode!

vil du poste den her eller...?
Avatar billede nemlig Professor
04. maj 2008 - 18:12 #3
Jeps - det vil jeg gerne - så kan andre også få glæde af det.
Det drejer sig om 2 filer, som jeg smider i hver sin kommentar.
Begge filer skal smides i samme mappe som dine billeder.
Der udover skal du lave en under-mappe, som du kalder "thumbnails". Denne mappe skal du lave CHMOD 777 på.
I filen head.php kan du foretage forskellige ændringer i opsætningen af din thumbnails. Det er bl.a. størrelse, antal stk. på tværs og farver.
Filen fotos.php skal du ikke gøre noget med.
Avatar billede nemlig Professor
04. maj 2008 - 18:13 #4
<?php

//DENNE FIL HEDDER head.php

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

// VIS TITLEN PA SIDEN
$pagetitle='Dokkeldal Lejren - galleri';

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

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



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

// Thumbnails max størrelse
$maxwidth = 150;
$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 = 'fotos.php';
?>
Avatar billede nemlig Professor
04. maj 2008 - 18:15 #5
<?php
//DENNE FIL HEDDER fotos.php
//SLET BLOT DE 4 FØRSTE LINJE, SÅ KODEN STARTER MED <HTML>
?>

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

<?php
//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 "<a href=?large=".$prev.">[&lt; &lt;]</a>";
echo '<button onclick="location.href=\'?large='.$prev .'\';return false;" class="form">[&lt; &lt;]</button>';
echo "&nbsp;&nbsp;&nbsp;&nbsp;";
//echo "<a href=?large=".$next.">[&gt; &gt;]</a>";
echo '<button onclick="location.href=\'?large='.$next .'\';return false;" class="form">[&gt; &gt;]</button>';


// 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 .'fdf.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>';
?>
Avatar billede krestian Nybegynder
20. juni 2008 - 09:13 #6
Lukker...
Avatar billede nemlig Professor
20. juni 2008 - 17:27 #7
Må jeg spørge dig, hvorfor du lukker. Jeg har bidraget med noget kode, og har ikke hørt noget i 1½ måned. Kunne du ikke bruge koden eller ........
Avatar billede krestian Nybegynder
20. juni 2008 - 17:50 #8
Ja, det må du da godt...

Jeg kan ikke lige overskue at benytte gdlib, så jeg scallerer billederne på den gamledags måde via Photoshop!

Men ellers tak for input!
Avatar billede nemlig Professor
20. juni 2008 - 18:09 #9
Velbekomme.
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