Hallo.
Vor langer Zeit habe ich ein Script entworfen, das eine Galerie aufbaut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bildergalerie</title>
<style type="text/css">
~~~~~~css
img
{border:0;}
h2
{
color:#CC6633;
margin-left:30px;
}
table
{
align:center;
}
~~~~~~html
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
~~~~~~php
<?php
echo "<h2>Bildergalerie: $topic</h2>";
echo "<div align=\"center\">";
// Prfen, ob Parameter ein Ordner ist
if(is_dir($dir)){
// Alle Dateinamen in Array lesen,
// erste zwei Elemente ("." und "..") werden gelöschcht
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
array_shift($files);
array_shift($files);
closedir($dh);
// Tabelle anfangen
echo("<table border=\"1\">\n<tr>\n");
foreach($files as $bild){
$bild="<a href=\"$dir$bild\"><img src=\"$dir$bild\" width=\"200\"></a>";
echo "<td>$bild</td>\n";
$j++;
if($j%3 == 0){
echo "</tr>\n<tr>\n";
}
}
// Tabelle beenden
echo "</tr>\n</table>\n";
echo "</div>";
}
// Wenn Parameter keine Galerie ist, Meldung ausgeben und sterben
else{
die("Galerie nicht gefunden!");
}
?>
~~~~~~html
</body>
</html>
Es gibt viele Nachteile bei diesem Script:
- Es werden alle Grafiken vollständig geladen, was demnach eine enorme Ladezeit beansprucht
- Es werden alle Grafiken vollständig geladen, der Browser lädt also alle Bilder herunter, was bei großen Galerien und Modem-Usern wiederum zu einer enormen Ladezeit führt
- Falsche Angabe von $topic führt zu Missverständnissen einiger Browser
- Was, wenn in dem angegebenen Ordner nicht nur Bilder sind, sondern auch z.B. html oder css-dateien?
Nun habe ich den Auftrag erhalten, ein Script zu entwerfen, welches Thumbnails aus großen Bilder erstellt, diese anzeigt (mit Auswahl des Users, wie viele in einer Tabellen-Zeile sind), verlinkt mit dem großen Bild und mit allem drum und dran.
Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?
Danke euch.
tirle