Suche einfaches Galerie-Script mit Thumbs und Blätterfunktion

Ich fühle mich ja geehrt das meine ImageHandler Klasse vorgeschlagen wurde ;)

@Topic, so schwer ist das alles gar nicht zu verstehen.

Dennis Wronkas Gallery mit Blätterfunktion mit der Directory List Klasse zusammen arebiten eigentlich so. Die Directory List liest alle Bilder aus. Wenn es gewünscht wird recursiv (das heisst insklusive aller Unterordner)
Und diese werden dann angezeigt , genau habe ich mir die Galerie noch nicht angesehen nun , denke aber das er dann die Ordner auflistet und wenn man dann auf einen Ordner klickt zeigt er die Bilder im Ordner an und im Menu die weiteren Unterordner , die Blätterfunktion sollte sich von allein erklären.

Meine Imagehandler klasse ist dazu da um Bilder zu verkleinern , in einander zu kopieren , Teile auszuschneiden etc. Dazu hat man ja auch in der Image Handler Klasse mehere Methoden zur Verfügung.

Eine ist nur dafür da Bilder zu verkleinern (Propertionen werden beibehalten)
eine weitere Methode schneidet im Bild einen Ausschnitt raus.
Eine andere wiederrum speichert das neu erstellte Bild oder gibt es direkt aus etc etc.

Das heisst für Thumbnail Erstellung brauchst lediglich die Funktion der GD Lib imagecopyresized, imagecreatefromjpg und imagejpg oder imagecreatefromgif , imagegif 1 Header setzen und fertig.

Alles in allen keine grosse Sache.

Viele Codeschnippsel für diesen Bereich findet man zum Beispiel auf cix88 seiner HP , ein bissel selber denken musst dann nur noch.
 
Erstmal: Willkommen im Forum.

Freue mich immer zu hoeren wenn andere User meinen Code fuer sich nutzen. Vor allem diese Gallerie scheint ja ganz gut anzukommen. :)
 
Ich finde die Gallerie ebenfalls gut und hab sie eingebaut.
Die Thumbs in der Gallerieübersicht wollte ich zentrieren, einzigtes Ergebnis das ich hinbekommen habe war leider nur, das alle Thumbs zentriert untereinander angeordnet waren.
Wie und an welcher stelle muss ich die Zentrierung einbauen?

Habs mit einem div-element geschafft, ka warum ich da nicht früher drauf gekommen bin
 
Zuletzt bearbeitet:
Hätte auch noch ne Lösung im Angebot.

Ich betreibe sone Seite in der ich eine solche Funktion benutze, die Ausgabe ist CSS gesteuert soweit ich mich erinnere, demnach sollte man sie überall einbauen können. Es müsste nur der Code noch etwas von mit in eine Datei getragen werden, da diese Funktion momentan in diese Seite integriert ist.

Jedoch kann sie nur das angegebene Verzeichnis auslesen, also kein rekrusives auslesen von Ordnerbäumen.
Sie kommt übrigens auch ohne SQL aus.


Wenn Interesse da ist, http://picit.pestiserve.com/gallery.php
Sonst bleibe bei den schon vorgeschlagenen Scripten, die sehen echt gut aus.
 
Zuletzt bearbeitet:
Auch nicht schlecht, aber ich werd bei der von Dennis bleiben, weil ich die sowieso schon benutze und man in der Großansicht noch blättern kann.
Interessant find ich allerdings die Pfeiltastensteuerung bei dir, wie haste das gemacht?
 
Moin ich finde das script bisher auch gut aber stehe irgendwie auf dem schlauch...
bekomme immer folgende Fehlermeldung




Warning: opendir(/thumb) [function.opendir]: failed to open dir: No such file or directory in /home/www/web101/html/directorylist.class.php on line 13

Warning: readdir(): supplied argument is not a valid Directory resource in /home/www/web101/html/directorylist.class.php on line 15

Warning: closedir(): supplied argument is not a valid Directory resource in /home/www/web101/html/directorylist.class.php on line 37
Galleries
thumb - 0 pictures

so mehr sonst morgen...
Nacht
 
Hallo,
kann mir sonst villeicht wer sagen was ich posten muß vielleicht hilft das ja
gallery.php
PHP:
<?php
define("IMAGESPATH",'images');
define("THUMBSPATH",'images/thumb');
define("MAXIMAGESPERROW",10);
define("MAXROWSPERPAGE",4);
define("SHOWPICCOUNT",true);
require("directorylist.class.php");
if (SHOWPICCOUNT==true)
    {
        $images=new directorylist(IMAGESPATH,true);
    }
else
    {
        $images=new directorylist(IMAGESPATH,true,true);
    }
if (!empty($_GET['gallery']))
    {
        if (!empty($_GET['image']))
            {
                if (SHOWPICCOUNT==false)
                    {
                        $images->subdirs[$_GET['gallery']-1]=new directorylist($images->subdirs[$_GET['gallery']-1]->name,true,true);
                    }
                $name=explode("/",$images->subdirs[$_GET['gallery']-1]->name);
                $name=$name[count($name)-1];
                echo '<a href="gallery.php?gallery='.$_GET['gallery'].'"><b>'.$name.'</b></a>';
                echo '<span style="margin-left:100px"><span style="margin-right:5px">';
                if ($_GET['image']>1)
                    {
                        echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&image='.($_GET['image']-1).'"><</a>';
                    }
                else
                    {
                        echo '<';
                    }
                echo '</span><span style="margin-left:5px">';
                if ($_GET['image']<count($images->subdirs[$_GET['gallery']-1]->files))
                    {
                        echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&image='.($_GET['image']+1).'">></a>';
                    }
                else
                    {
                        echo '>';
                    }
                echo '</span></span>';
                echo '<a href="index.html">Zurück zur Hauptseite</a><hr>';
                echo '<img src="'.IMAGESPATH.'/'.$name.'/'.$images->subdirs[$_GET['gallery']-1]->files[$_GET['image']-1].'" alt="'.$images->subdirs[$_GET['gallery']-1]->files[$_GET['image']-1].'">';
            }
        else
            {
                if (!empty($_GET['page']))
                    {
                        $page=$_GET['page'];
                    }
                else
                    {
                        $page=1;
                    }
                $name=explode("/",$images->subdirs[$_GET['gallery']-1]->name);
                $name=$name[count($name)-1];
                echo '<b>'.$name.'</b>';
                $thumbs=new directorylist(THUMBSPATH.'/'.$name,true,true);
                $pages=ceil(count($thumbs->files)/(MAXIMAGESPERROW*MAXROWSPERPAGE));
                echo '<span style="margin-left:100px"><span style="margin-right:5px">';
                if ($page>1)
                    {
                        echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&page='.($page-1).'"><</a>';
                    }
                else
                    {
                        echo '<';
                    }
                echo '</span><span style="margin-left:5px">';
                if ($page<$pages)
                    {
                        echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&page='.($page+1).'">></a>';
                    }
                else
                    {
                        echo '>';
                    }
                echo '</span></span>';
                echo '<a href="index.html">Zur Startseite</a><hr>';
                $x=0;
                while ($x<MAXIMAGESPERROW*MAXROWSPERPAGE)
                    {
                        if (!isset($thumbs->files[$x+($page-1)*MAXIMAGESPERROW*MAXROWSPERPAGE]))
                            {
                                break;
                            }
                        echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&image='.($x+($page-1)*MAXIMAGESPERROW*MAXROWSPERPAGE+1).'"><img style="border:none; margin:5px;" src="'.THUMBSPATH.'/'.$name.'/'.$thumbs->files[$x+($page-1)*MAXIMAGESPERROW*MAXROWSPERPAGE].'" alt="'.$thumbs->files[$x].'"></a>';
                        $x++;
                        if ($x%MAXIMAGESPERROW==0)
                            {
                                echo '';
                            }
                    }
                unset($thumbs);
            }
    }
else
    {
        echo '<b>Galleries</b><hr>';
        for ($x=0;$x<count($images->subdirs);$x++)
            {
                $name=explode("/",$images->subdirs[$x]->name);
                $name=$name[count($name)-1];
                echo '<a href="gallery.php?gallery='.($x+1).'">'.$name.'</a>';
                if (SHOWPICCOUNT==true)
                    {
                        echo ' - '.count($images->subdirs[$x]->files).' pictures';
                    }
                echo '';
            }
    }
unset($images);
?>

directorylist.class
PHP:
<?php
class directorylist
{
    public $name;
    public $subdirs;
    public $files;
    
    public function __construct($dirname,$sort=false,$limitrecursion=false,$recursiondepth=0)
    {
        $this->name=$dirname;
        $this->subdirs=array();
        $this->files=array();
        $dir=opendir($dirname);
	
        while ($file=readdir($dir))
	
            {
                if (($file!=".") && ($file!=".."))
                    {
                        if (is_dir($dirname."/".$file))
                            {
                                if (($limitrecursion==false) || ($recursiondepth>-1))
                                    {
                                        
					$this->subdirs[]=new directorylist($dirname=$URL."/".$file,$sort,$limitrecursion,$recursiondepth-1);
                                    }
                            }
                        else
                            {
                                if (($limitrecursion==false) || ($recursiondepth>-1))
                                    {
                                        $this->files[]=$file;
                                    }
                            }
                    }
            }
        closedir($dir);
        if ($sort==true)
            {
                sort($this->files);
                sort($this->subdirs);
            }
    }

    private function findsubdirbyobject($needle)
    {
        for ($x=0;$x<count($this->subdirs);$x++)
            {
                if ($this->subdirs[$x]==$needle)
                    {
                        return $x;
                    }
                else
                    {
                        $val=$this->subdirs[$x]->findsubdirbyobject($needle);
                        if ($val!=-1)
                            {
                                return $x.','.$val;
                            }
                    }
            }
        return -1;
    }

    private function findsubdirbyname($needle)
    {
        for ($x=0;$x<count($this->subdirs);$x++)
            {
                if ($this->subdirs[$x]->name==$needle)
                    {
                        return $x;
                    }
                else
                    {
                        $val=$this->subdirs[$x]->findsubdirbyname($needle);
                        if ($val!=-1)
                            {
                                return $x.','.$val;
                            }
                    }
            }
        return -1;
    }

    public function findsubdir($needle)
    {
        $vartype=gettype($needle);
        if ($vartype=="string")
            {
                return $this->findsubdirbyname($needle);
            }
        elseif ($vartype=="object")
            {
                return $this->findsubdirbyobject($needle);
            }
        else
            {
                return -1;
            }
    }
}
?>
 
Anhand der Fehlermeldung wuerde ich sagen, dass Dein Thumb-Verzeichnis nicht existiert.
Ansonsten muss ich mal gucken ob dieser Pfad vielleicht irgendwie falsch gehandhabt wird, mir faellt aber grad kein Grund ein warum das so sein sollte.

Nachtrag: Mir faellt grad auf, dass Du in der Klasse rumgespielt hast und diese Zeile
PHP:
$this->subdirs[]=new directorylist($dirname."/".$file,$sort,$limitrecursion,$recursiondepth-1);
bei Dir nun so
PHP:
$this->subdirs[]=new directorylist($dirname=$URL."/".$file,$sort,$limitrecursion,$recursiondepth-1);
aussieht.

Der Parameter $dirname=$URL."/".$file macht dort recht wenig Sinn. Wenn er ueberhaupt irgendwas uebergeben sollte (scheinbar das hier bemaekelte /thumbs) dann nur Kaese, denn $URL ist nicht definiert. Ausserdem frag ich mich warum Du da eine Variable setzen willst.

Wenn Du die Klasse in unveraendertem Zustand, also so wie ich sie im Tutorial gepostet und angehaengt hab, nutzt, dann solltest Du das Problem loswerden.
 
Zurück