ich habe das Modul der Bildergalerie von Large Green Wood in der überarbeiteten Version von chobbert nochmal erweitert (http://contenido.de/forum/viewtopic.php?t=3027).
Es wird jetzt in die großen Bilder ein Wasserzeichen eingebaut (nicht in die Thumbnails) und diese Bilder werden alle in eine best. Größe kleingerechnet (500 Pixel Breite oder Höhe, je nachdem, ob sie Hoch- oder Querformat sind).
Für das Wasserzeichen muß eine Datei namens "wasserzeichen.png" im Verzeichnis "/images" abgelegt werden.
Input:
Code: Alles auswählen
/*
Bildergallery
(c) by LGW, 2002
License: GPL, http://www.gnu.org/licenses/gpl.html
Fragen, Anregungen, Hilfegesuche: large@lilymarleen.de
Dokumentation:
1. How it works:
Die Bildergallery stellt alle Bilder in einem (frei wählbaren) Verzeichnis namentlich, oder
wenn verfügbar als Thumbnails dar. Ein klick auf ein Thumbnail öffnet das Bild wahlweise in der Galleryseite
statt der Thumbnailtabelle, oder in einer eigenen Inhaltsseite (kann wie interner Link ausgewählt werden).
Ist auf dem Webserver die ImageMagick-Software vorhanden, können die benöntigten Thumbnails
auch automatisch generiert werden; daför ist weiterhin ein Schreibzugriff für den Webserver auf
das Thumbnail-Verzeichnis nötig (alle+lesen/schreiben/wechseln, a+rwx).
2. Installation:
Zunächstmal wie gehabt das Modul anlegen. Der obere Teil in "INPUT", der untere in "OUTPUT".
Im Grunde genügt ein Template; sollen die Bilder "in gross" in einem anderen Template angezeigt werden,
muss auch in diesem ein Imagelib-Modul eingetragen werden! Dort spielen die Parameter allerdings keine Rolle.
Einstellungen zur Imagelib:
Einzelbild-Seite:
die Seite, in der die "grossen" Bilder dargestellt werden.
Image-Directory:
relative Verzeichnisangabe zu den Bildern (z.B. images_gallery1)
Thumbnail-Directory:
relative Verzeichnisangabe zu den Thumbnails (z.B. images_gallery1_thbs) - unbedingt ein *anderes* Verzeichnis als das Image-Directory!
Soll Imagemagick benutzt werden, muss der Webserver hier Schreibrechte haben! (so wie z.B. im logs-Verzeichnis)
Image-Dateiendung:
Hier können alle Endungen eingetragen werden, die als Image betrachtet werden sollen. Trenner ist das Semikolon, also
.jpg;.gif;.png
Thumbnailtabelle in Spalten x Zeilen:
Anzahl der Thumbnails in der Übersicht.
Thumbnail-Grösse:
Gibt zum einen die Grösse der Tabellenzellen an, zum anderen die Grösse auf die Imagemagick die Bilder umrechnet sofern
automatische Thumbnails verwendet werden
Pfad zum ImageMagick (optional):
Hier wird der Pfad zu den ImageMagick-Tools hinterlegt, im Regelfall /usr/bin oder /usr/X11/bin. Wird dies Feld freigelassen,
ist die automatische Generierung der Thumbnails ausgeschaltet!
*/
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">
<tr valign=\"top\">
<td>Einzelbild-Seite</td>
<td>
<select name=\"CMS_VAR[0]\">";
$sql = "SELECT * FROM $cfgTab_cat_tree AS TREE, $cfgTab_cat_side AS CATSIDE, $cfgTab_cat AS CAT, $cfgTab_cat_lang AS CATLANG, $cfgTab_side_lang AS SIDELANG WHERE TREE.idcat=CATSIDE.idcat AND CATSIDE.idcat=CATLANG.idcat AND CATLANG.idlang='$lang' AND CATSIDE.idside=SIDELANG.idside AND SIDELANG.idlang='$lang' AND CAT.idcat=TREE.idcat AND CAT.idclient='$client' ORDER BY TREE.idtree";
$db->query($sql);
if ($selected != 0) {
echo "<option value=0>diese Seite</option>";
} else {
echo "<option value=0 selected>diese Seite</option>";
}
while ($db->next_record()) {
$spaces = "";
for ($i=0; $i<$db->f("level"); $i++) {
$spaces = $spaces . " ";
}
if ( $db->f("idcatside") != $selected ) {
echo "<option value=\"".$db->f("idcatside")."\">$spaces ".$db->f("name")."---".$db->f("title")."</option>";
} else {
echo "<option value=\"".$db->f("idcatside")."\" selected>$spaces ".$db->f("name")."---".$db->f("title")."</option>";
}
}
echo "</select>";
echo " </td>
</tr>
<tr>
<td>
Image-Directory:
</td>
<td>
<input size=20 type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\">
</td>
</tr>
<tr>
<td>
Thumbnail-Directory:
</td>
<td>
<input size=20 type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\">
</td>
</tr>
<tr>
<td>
Image-Dateieendung (z.B. .jpg;.gif):
</td>
<td>
<input size=20 type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\">
</td>
</tr>
<tr>
<td>
Thumbnailtabelle in Spalten x Zeilen:
</td>
<td>
<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\">x<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[6]\" value=\"CMS_VALUE[6]\">
</td>
</tr>
<tr>
<td>
Thumbnailgrösse in XxY:
</td>
<td>
<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\">x<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[8]\" value=\"CMS_VALUE[8]\">
</td>
</tr>
<tr>
<td>
Pfad zum ImageMagick (optional):
</td>
<td>
<input size=20 type=\"text\" name=\"CMS_VAR[9]\" value=\"CMS_VALUE[9]\">
</td>
</tr>
</table>";
// ENDE INPUT
Code: Alles auswählen
<?
// Bildergalerie
// Imageresize der Thumbs über ImageMagick *ODER* GD
// Wasserzeichen einbauen und große Bilder in gleiche Größen verkleinern
// Version: 04.03.2004
//
// Author: Large Green Wood vgl. http://www.contenido.de/front_dev/upload/1ImageGal.txt
// Modified by: Robert Strouhal www.clearcreative.de
// Modified by: Daniel Buhmann www.cyberdan.de
echo "<p>\n";
// ANFANG OUTPUT
$imagedir="CMS_VALUE[2]";
$thumbnails="CMS_VALUE[3]";
$imagetypes=explode(";","CMS_VALUE[4]");
$rows="CMS_VALUE[6]";
$cols="CMS_VALUE[5]";
$thb_x_size="CMS_VALUE[7]";
$thb_y_size="CMS_VALUE[8]";
$image_idcat="CMS_VALUE[0]";
$image_idside="CMS_VALUE[1]";
$im_path="CMS_VALUE[9]";
//-- config ende -------------------------------------
function is_image($filename,$typearray) {
reset($typearray);
while($val=each($typearray)) {
if (strstr($filename,$val[value])!==false) {
return true;
}
}
}
// verkleinert ein Bild auf die angegebene Breite (bei Querformat) oder Höhe (bei Hochformat)
// Seitenverhältnisse werden beibehalten
function resizeImageGD($sourceFile, $targetFile, $newwidth=50, $newheight=50){
$source = ImageCreateFromJpeg($sourceFile);
$width = ImageSx($source);
$height = ImageSy($source);
if ($width > $height){ // Querformat
$newheight = $height*($newwidth/$width);
}else{ // Hochformat
$newwidth = $width*($newheight/$height);
}
$target = ImageCreateTrueColor($newwidth,$newheight);
// ÄNDERUNG vgl. Forums-Beitrag imagecopyresized ($target, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagecopyresampled ($target, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
ImageJPEG($target,$targetFile,100);
}
//-- functions ende ----------------------------------
if (!isset($mmstart)) {
$mmstart=0;
}
// Anzeige eines Bildes oder Übersicht?
if ($subfile!="") {
// Bild anzeigen
echo "<center><a href=\"javascript:history.back()\">zurück</a>";
echo "<br>";
echo "<img src=\"$subfile\">";
echo "<br>";
echo "<a href=\"javascript:history.back()\">zurück</a></center>";
} else {
// Gallery anzeigen
$handle=opendir($imagedir);
echo "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">";
$n=0;
$filearray=Array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && is_image($file,$imagetypes)) {
$filearray[]=$file;
}
}
reset($filearray);
// skip images...
for ($n=0;$n<$mmstart;$n++)
$ffile=each($filearray);
$n=0;
while ($ffile=each($filearray)) {
$file=$ffile[value];
// generate thumbnail, if nessesairy. Now THIS is fun :)
// natuerlich nur, wenn imagemagick vorhanden ist...
if (!file_exists($thumbnails."/thb_".$file) ) {
if ($im_path!="") {
$cmd=$im_path."/convert -scale ".$thb_x_size."x".$thb_y_size." ".$imagedir."/".$file." ".$thumbnails."/thb_".$file;
exec($cmd);
// nochmal prüfen!
$thumbnail=file_exists($thumbnails."/thb_".$file);
} else{
// Thumbnails mit GD verkleinern
@ini_set("max_execution_time", 120);
@resizeImageGD($imagedir."/".$file, $thumbnails."/thb_".$file, $thb_x_size,$thb_y_size);
$thumbnail=file_exists($thumbnails."/thb_".$file);
}
//Wasserzeichen einbauen und Bilder auf 500 Pixel Höhe oder Breite verkleinern
$size = getimagesize($imagedir."/".$file);
$width_old = $size[0];
$height_old = $size[1];
$old_picture = imagecreatefromjpeg($imagedir."/".$file);
if ($width_old > $height_old) {
$width_new = 500;
$height_new = intval($height_old * $width_new / $width_old);
}
else {
$height_new = 500;
$width_new = intval($width_old * $height_new / $height_old);
}
$new_picture = imagecreatetruecolor($width_new, $height_new);
imagecopyresampled($new_picture, $old_picture, 0, 0, 0, 0, $width_new, $height_new, $width_old, $height_old);
$transition = 40;
$watermarkfile = imagecreatefrompng('images/wasserzeichen.png');
$watermarkpic_width = imagesx($watermarkfile);
$watermarkpic_height = imagesy($watermarkfile);
$watermarkdest_x = $width_new / 2 - ($watermarkpic_width / 2);
$watermarkdest_y = $height_new / 2 - ($watermarkpic_height / 2);
imagecopymerge($new_picture, $watermarkfile, $watermarkdest_x, $watermarkdest_y, 0, 0, $watermarkpic_width, $watermarkpic_height, $transition);
imagejpeg($new_picture, $imagedir."/".$file, 100);
} else
$thumbnail=true;
if ($n%$cols==0)
echo "<tr>\n";
if ($image_idcat!=0)
$url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcatside=$image_idcat&subfile=".rawurlencode($imagedir."/".$file));
else
$url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&idside=$idside&subfile=".rawurlencode($imagedir."/".$file));
echo "<td valign=\"middle\" align=\"center\" width=\"$thb_x_size\" height=\"$thb_y_size\"><a href=\"$url\">".($thumbnail ? "<img src=\"$thumbnails/thb_$file\" border=\"0\">":"$file")."</a></td>\n";
$n++;
if ($n%$cols==0)
echo "</tr>\n";
// nur solange wie's not tut...
if ($n>=$rows*$cols)
break;
}
echo "<tr> <td colspan=\"$cols\" align=\"center\">";
if ($mmstart>0) {
$url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idside=$idside&mmstart=".($mmstart-$rows*$cols));
echo "<a href=\"$url\">vorherige Bilder...</a>";
}
echo "<span style=\"font-size: 9pt;\">| zeige Bilder ".($mmstart+1)." - ".($mmstart+$n)." |</span>";
if ($n+$mmstart<count($filearray)) {
$url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idside=$idside&mmstart=".($mmstart+$rows*$cols));
echo "<a href=\"$url\">weitere Bilder...</a>";
}
echo "</tr>\n";
echo "</table>";
} // Ende Gallery anzeigen
echo "</p>";
?>