Modul Bildergalerie

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

kummer hat geschrieben:wenn du weisst, wie das unterverzeichnis heisst, kannst du es natürlich direkt aus dem array entfernen. dann tritt das problem auch nicht mehr auf.
Meeeeeeeeensch! Warum in der Ferne schweifen ... :wink: Das ist natuerlich die naheliegendste Loesung, zumindest fuer mich! Denn ich habe ja in dem Verzeichnis nur das Unterverzeichnis 'thumbs' fuer die Thumbnails, und auch bei verschiedenen Bildverzeichnissen heisst das Thumbs-Unterverzeichnis immer thumbs. Ich habe also nur die if-Bedingung erweitert:

Code: Alles auswählen

 if ($file != "." && $file != ".." &&$file !="thumbs") { 
                $bild[] = $file;
   } 
Keine Fehlermeldungen mehr und auch keine broken-image-Symbole mehr! Danke und schon mal schoenes Wochenende! :)
constructor
Beiträge: 6
Registriert: Di 23. Mär 2004, 10:57
Kontaktdaten:

bobcom galerie 1.0

Beitrag von constructor »

warum nehmt ihr nicht die bobcom galerie 1.0? die setzt auf imagemagick auf und ist sehr einfach zu konfigurieren. check this out -> http://www.contenido.de/front_dev/uploa ... m_1.00.zip 8)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

offenbar hat das bei mandanten nicht funktioniert. aber ich weiss nicht genaueres. christa hat gefragt und da habe ich eben rasch was gecoded.

ob man die gd-library oder imagemagick für die verkleinerung verwendet, macht eigentlich keinen unterschied. bei beiden hast du das problem, dass es vom provider unterstützt werden muss. wenn das nicht der fall ist, funktioniert das ganze ohnehin nicht.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
constructor
Beiträge: 6
Registriert: Di 23. Mär 2004, 10:57
Kontaktdaten:

Beitrag von constructor »

hm, ich habe bloederweise nicht den kompletten thread gesehen, sondern nur diesen letzten teil. die em fordert ihren tribut. :roll:
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

null problemo :lol:
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

kummer hat geschrieben:offenbar hat das bei mandanten nicht funktioniert. aber ich weiss nicht genaueres.
genau so war das. Genaueres steht in meinem anderen Thread. :) Ich hatte uebrigens auch mehrere darauf basierende Galerien probiert und hatte ueberall das gleiche Problem mit dem Mandanten.
kummer hat geschrieben:ob man die gd-library oder imagemagick für die verkleinerung verwendet, macht eigentlich keinen unterschied. bei beiden hast du das problem, dass es vom provider unterstützt werden muss.
Ich habe beides, aber das Problem lag wohl woanders (wo auch immer, denn herausgefunden habe ich es nicht). Auch egal, denn mit Deiner Galerie bin ich sehr zufrieden. :)
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

So, nachdem ich noch Schoenheitsfehler in der von mir angepassten Version fand, kommt hier die korrigierte Version. Da bei mir auf dem Server das exif-Zeug nicht funktioniert, ueberpruefe ich nur darauf, ob ein Unterverzeichnis namens 'thumbs' existiert, und dieses wird bei der Erzeugung der Galerie nicht beruecksichtigt (nur die darin enthaltenen Dateien!). Die Verzeichnisse koennen per Pulldown-Menue ausgewaehlt werden. Die Version sollte auch fuer mehrere Mandanten funktionieren, zumindest tut sie das bei mir.

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :	    w3concepts.picgallery.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-15-2004
* Modified    :     06-18-2004
*************************************************/
$selected = "CMS_VALUE[0]"; 
$path1 = "CMS_VALUE[1]";
$path2 = "CMS_VALUE[2]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">";

echo "
        <tr> 
        <td> 
        Bilderverzeichnis: 
       </td> 
            <td> 
";

// hier die Auswahl der Verzeichnisse

function get_dir_array($dir){
  global $i,$dirs_array;
  $current_dir = opendir($dir);
  while($entryname = readdir($current_dir)){
     if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")){
        get_dir_array("${dir}/${entryname}");
        $dirs_array[$i] = "${dir}/${entryname}";
        $i++;
     }
  }
  closedir($current_dir);
return $dirs_array;
}

$i = 0;

$path = substr_replace($cfgClient[$client]["path"]["upload"], "", strrpos($cfgClient[$client]["path"]["upload"], "/"));
$verz_liste = get_dir_array($path);

echo "<select name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\">";

foreach ( $verz_liste as $verz ){
 $verz = eregi_replace ($cfgClient[$client]['path']['frontend'], "", $verz);
 if ( $path1 == $verz ){ $wwi =  "selected";   }
 else { $wwi = ""; }
 echo "<option value=\"$verz\" $wwi>$verz</option>";
}

echo "</select>";


echo "
</td> 
  </tr> 

        <tr> 
        <td> 
        Thumbnailverzeichnis: 
       </td> 
            <td> ";

echo "<select name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\">";

foreach ( $verz_liste as $verz ){
 $verz = eregi_replace ($cfgClient[$client]['path']['frontend'], "", $verz);
 if ( $path2 == $verz ){ $wwi =  "selected";   }
 else { $wwi = ""; }
 echo "<option value=\"$verz\" $wwi>$verz</option>";
}

echo "</select>";

echo "
</td> 
  </tr>"; 

echo "<tr><td>Thumbnailbreite (Max.):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"5\" /></td>";

echo "<tr><td>Thumbnailhöhe (Max.):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"5\" /></td>";

echo "<tr><td>Anzahl Spalten:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"5\" /></td>";

echo "<tr><td>Anzahl Zeilen:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[6]\" value=\"CMS_VALUE[6]\" size=\"5\" /></td>";

echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\" size=\"15\" /></td>";

echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[8]\" value=\"CMS_VALUE[8]\" size=\"15\" /></td>";

echo "</table>";

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.picgallery.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-15-2004
* Modified    :     06-18-2004
************************************************/

    // konfiguration

    $pic['bilderpfad'] = "CMS_VALUE[1]"."/";
    $pic['thumbnailpfad'] = "CMS_VALUE[2]"."/";

    $pic['absbilderpfad'] = $cfgClient[$client]["path"]["frontend"].$pic['bilderpfad'];
    $pic['absthumbnailpfad'] = $cfgClient[$client]["path"]["frontend"].$pic['thumbnailpfad'];

    $pic['htmlthumbnailpfad'] = $cfgClient[$client]["path"]["htmlpath"].$pic['thumbnailpfad'];
    $pic['htmlbilderpfad'] = $cfgClient[$client]["path"]["htmlpath"].$pic['bilderpfad'];

    $pic['breite'] = "CMS_VALUE[3]";
    if ($pic['breite'] == '') $pic['breite'] = 100;

    $pic['hoehe'] = "CMS_VALUE[4]";
    if ($pic['hoehe'] == '') $pic['hoehe'] = 100;

    $pic['spalten'] = "CMS_VALUE[5]";
    if ($pic['spalten'] == '') $pic['spalten'] = 3;

    $pic['zeilen'] = "CMS_VALUE[6]";
    if ($pic['zeilen'] == '') $pic['zeilen'] = 3;

    $pic['anzahl'] = $pic['spalten'] * $pic['zeilen'];

    $pic['previous'] = "CMS_VALUE[7]";
    if ($pic['previous'] == '') $pic['previous'] = '[:: rückwärts ]';

    $pic['next'] = "CMS_VALUE[8]";
    if ($pic['next'] == '') $pic['next'] = '[ vorwärts ::]';

    // einlesen des bildverzeichnisses
    $handle=opendir($pic['absbilderpfad']); 
    while ($file = readdir ($handle)) {
    if ($file != "." && $file != ".." &&$file !="thumbs") { 
                $bild[] = $file;
   } 
    }
    closedir($handle);
    sort($bild);

    $current = $_GET['tran'];
    if ($current == '') $current = 0;

    $next = $current + ($pic['spalten'] * $pic['zeilen']);
    if ($next >= count($bild)) $next = false;

    $previous = $current - ($pic['spalten'] * $pic['zeilen']);
    if ($previous < 0) $previous = false;  

    echo '<p><table cellpadding="0" cellpacing="0" class="bildergalerie">';

    for ($i=0;$i<$pic['zeilen'];$i++) {
	echo '<tr class="zeile">';

		for ($j=0;$j<$pic['spalten'];$j++) {
			echo '<td class="zelle">';

			$bildnummer = $i * $pic['spalten'] + $j + $current;

			if ($bildnummer < count($bild)) {

				// bildmasse ermitteln
				$src_image_size = getimagesize("{$pic['absbilderpfad']}{$bild[$bildnummer]}");

				// prüfen, ob thumbnail bereits vorhanden ist
				if (!file_exists("{$pic['absthumbnailpfad']}{$pic['breite']}.{$pic['hoehe']}.{$bild[$bildnummer]}.jpg")) {

					// ermitteln ob das bild auf bestimmte höhe oder bestimmte breite zu reduzieren ist
					// sowie ermitteln, um welchen faktor das bild zu verkleinern ist
					if ($src_image_size[0]/$src_image_size[1] > $pic['breite']/$pic['hoehe']) {
						$verkleinerungsfaktor = $pic['breite']/$src_image_size[0];
					} else {
						$verkleinerungsfaktor = $pic['hoehe']/$src_image_size[1];
					}
	
					// berechnen der thumbnailgrösse
					$bildhoehe = round($src_image_size[1] * $verkleinerungsfaktor);
					$bildbreite = round($src_image_size[0] * $verkleinerungsfaktor);
	
					// thumbnail erstellen
					$dst_im = imagecreatetruecolor($bildbreite,$bildhoehe);
					if ($src_image_size[2] == 1) {
						$src_im = imagecreatefromGIF("{$pic['absbilderpfad']}{$bild[$bildnummer]}");
					} elseif ($src_image_size[2] == 2) {
						$src_im = @ImageCreateFromJPEG("{$pic['absbilderpfad']}{$bild[$bildnummer]}");
					} else {
						$src_im = @imagecreatefromgd("{$pic['absbilderpfad']}{$bild[$bildnummer]}");
					}
					imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]);
					imagejpeg ($dst_im,"{$pic['absthumbnailpfad']}{$pic['breite']}.{$pic['hoehe']}.{$bild[$bildnummer]}.jpg",100);
					
				}
	
				// bildpfad an browser ausgeben
				echo "<a href=\"#\" onClick=\"window.open('{$cfgClient[$client]["path"]["htmlpath"]}popupviewer.php?uri={$pic['htmlbilderpfad']}{$bild[$bildnummer]}','bild','width={$src_image_size[0]},height={$src_image_size[1]},top=10,left=10,scrollbars=no,topmargin=0,leftmargin=0');bild.document.body.style.margin=0;\">";
				echo "<img src=\"{$pic['htmlthumbnailpfad']}{$pic['breite']}.{$pic['hoehe']}.{$bild[$bildnummer]}.jpg\"/ border=\"0\">";
				echo "</a>";

			}
	
			echo '</td>';
		}

	echo '</tr>';
    }

    echo '</table></p>';

    echo '<table class="bildergalerie"><tr class="zeile"><td class="zelle">';
    if ($next !== false) {
	$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&tran=$next");
	echo "<a href=\"$link\">{$pic['next']}</a>";
    }
    echo '</td><td class="zelle">';
    if ($previous !== false) {
	$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&tran=$previous");
	echo "<a href=\"$link\">{$pic['previous']}</a>";
    }
    echo '</td></tr></table>';
?>
Gruss
Christa
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Doppelt gemoppelt

Beitrag von Halchteranerin »

Hi Andreas,

mir ist gestern erst aufgefallen, dass die erzeugten Thumbs .jpg.jpg heissen. Nicht schoen, aber selten. :wink: Und mir ist nicht so ganz klar, woran das liegt, aber kann man das irgendwie beheben? Ich vermute (so ganz habe ich das Modul nicht durchschaut, nur teilweise), Du fuegst an die Dateinamen einfach die Erweiterung .jpg, wenn die Thumbnails erstellt werden. Gibt's vielleicht die Moeglichkeit, davor die Dateinamenerweiterung zu entfernen, mit irgendeiner PHP-Funktion o.ae.?

Gruss
Christa

PS Ich benutze die Version, die ich zuletzt in diesem Thread gepostet habe.
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

tja, deine feststellung ist richtig. der grund dafür ist die eindeutigkeit des entstehenden dateinamens. angenommen du hast ein bild zwei mal vorliegen mit dem gleichen dateinamen, aber unterschiedlicher extension. in diesem fall würde das thumbail überschrieben werden. und das wäre dann nicht so gut. im übrigen stört das ja überhaupt nicht (mindestens unter linux).

aber wenn du es gerne weghaben möchtest, findet sich immer ein weg. du kannst mit der php-funktion split('.',$bildname) den bildbezeichner zerlegen und anschliessend wieder zusammensetzen (bis auf den letzen teil natürlich, den willst du ja weg haben).

oder du machst ein $bildname = str_replace('.jpg','',$bildname) sowie $bildname = str_replace('.gif','',$bildname).

je nach dem was dir lieber ist. aber vorsicht: wichtiger als die ästhetik des dateinamens ist seine eindeutigkeit. du kannst z.b. anstelle des bildbezeichners, welcher sich aus der datei ableitet, auch z.b. einen md5-hash der bilddatei verwenden. dieser ist mit an sicherheit grenzender wahrscheinlichkeit im kontext eines servers eindeutig.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

kummer hat geschrieben:tja, deine feststellung ist richtig. der grund dafür ist die eindeutigkeit des entstehenden dateinamens. angenommen du hast ein bild zwei mal vorliegen mit dem gleichen dateinamen, aber unterschiedlicher extension. in diesem fall würde das thumbail überschrieben werden. und das wäre dann nicht so gut. im übrigen stört das ja überhaupt nicht (mindestens unter linux).
Es stoert auch nur mein Auge, wenn ich doppelt sehe, das stimmt schon. :) Und dass Du an die moegliche Problematik gedacht hast, dass es das gleiche Bild in unterschiedlichen Formaten ist zwar gut (da allgemeingehalten), aber bei mir sind's nur JPGs, also habe ich in der Hinsicht nichts zu befuerchten. Deswegen werde ich demnaechst mal gucken, welchen Deiner beiden Vorschlaege umsetze, danke fuer die Tipps!
Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist »

hmmm...nehmt doch den TimeStamp aus dem anderen BildModul.

Die Datei bekommt vor dem speichern den Timestamp vor dem Namen eingefügt
Upload: issnich.jpg
speicherung: timestamp-issnich.jpg

Dadurch ist die Datei eindeutig und kann in keinem Fall von einem anderen überschrieben werden.

OK, ein Zeitreisender könnte das Bild mit gleichem Namen in exact derselben Sekunde uploaden und es dadurch killen...aber doch ein "bischen" unwahrscheinlich :)

greets
TimeSpirit
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

timestamp geht nicht. man muss während der ausführung den namen des thumbnails herleiten können. das geht mit md5 oder so, wie es derzeit gemacht ist. aber es wird unmöglich sein, den timestamp der ersten erstellung eines thumbnails beim nächsten aufruf herzuleiten.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Mark82
Beiträge: 4
Registriert: Mi 21. Jul 2004, 08:01
Kontaktdaten:

Beitrag von Mark82 »

Hallo zusammen,

ist es möglich, unterhalb der vergrößerten Abbildung (Pop-Up) die Bildbeschreibung aus der Dateiverwaltung auszugeben? Wenn ja, wie?

Wäre nett, wenn jemand das mal in Angriff nehmen könnte.

Danke vorab,
Mark
Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist »

hi,
skyblader wollte sich das auch noch einmal anschauen...wegen Beschreibung und so
Der ist aber gerade vom Manöver zurück gekommen...dauert n paar Tage
greets
TimeSpirit
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -
Mark82
Beiträge: 4
Registriert: Mi 21. Jul 2004, 08:01
Kontaktdaten:

Beitrag von Mark82 »

Danke für die Info. Wäre super, wenn das klappen würde.

Grüße,
Mark
Gesperrt