Antworten auf deine Fragen:
Neues Thema erstellen

Nur Bilder auslesen für Gallerie

DaBoarder

Noch nicht viel geschrieben

Hi
Ich bastle jetzt schon seit 2 Tagen an einer Gallerie herum die automatisch die bilder aus einem Ordner ausliest.

Also habe ich ein Hauptverzeichnis in dem die index.php ist in die wird die bilder.php includiert.
In der bilder.php sollen NUR die JPG und PNG bilder aus dem Ordner Fotos ausgelesen.

Mein Problem ist eigentlich nur das er aber Alle dateien ausliesst also auch die phps. Und die PNG kann er nicht darstellen....

hier mal mein script:
Code:
<?php
if ($handle = opendir($ordner[0]))
{

while (false !== ($file = readdir($handle))) {
$laenge = strlen($file);
if (substr($file, -4 ==".jpg") && substr($file, -4 ==".png") && $file!="." && $file!= ".." && $laenge<40) {
        $bildernamen[] = $file;
		}
    }
closedir($handle) ;
}

foreach($bildernamen as $bn) {
echo "<li>";
echo $bn;
echo "</li>";
}

foreach ($bildernamen AS $dateiname)
{
$exif = exif_read_data($ordner[0] . $dateiname, ANY_TAG, true, true);
echo "<img src=\"$ordner[0]$dateiname\" ";
//echo $exif['COMPUTED']['html']; //hier stehen die im bild gespeicherte bildgrösse
echo "longdesc=\"$dateiname\"" ;
echo " alt=\"";
echo $exif['WINXP']['Title'];
echo '" width="100" border=0 />';
}
unset($bildernamen);
?>

Wo ist der Fehler???


der ordnername wird schon beim includen im array angegeben.
und nicht wundern wegen der dateilängenbegrenzung, ist wegen dem einbau in eine javascript slideshow.
 

fotosaugsburg

Nicht mehr ganz neu hier

AW: Nur Bilder auslesen für Gallerie

Hallo

entweder habe ich einen Denkfehler aber wenn ich nicht irre steht da
(substr($file, -4 ==".jpg") && substr($file, -4 ==".png")

wenn es sich im ein jpg UND ein PNG handel, dann mache etwas
es kann aber nicht gleichzeit beides erfüllt sein, also wird er dein bild nie anzeigen

also hier mit ODER (||) arbeiten und sicherheitshalber korrekt klammern.

grüße

Bernd
 

sokie

Mod | Web

AW: Nur Bilder auslesen für Gallerie

f (substr($file, -4 ==".jpg") && substr($file, -4 ==".png")...
hmm... dass nur die PNGs schwierigkeiten machen kann ich kaum glauben...
nach der logik müssten in dem dateinamen sowohl ".png" als auch ".jpg" vorkommen, damit das "true" ist.
würde denn
Code:
if (stristr($file,".jpg") || stristr($file,".png") && strlen($file)<40)
nicht genau genug sein?
 

FlashSoft

Besserwisser

AW: Nur Bilder auslesen für Gallerie

Am besten 2 Abfragen machen oder wie @fotosaugsburg schon sagt mit ODER abfragen. Versuch doch mal das einfache Script, sollten da auch noch Probleme sein, dann schreiben.

Code:
[COLOR=#000000] [COLOR=#0000BB]<?PHP 
[/COLOR][COLOR=#FF8000]//verzeichnis lesen 
[/COLOR][COLOR=#0000BB]$mydir [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]getcwd[/COLOR][COLOR=#007700]().[/COLOR][COLOR=#DD0000]"/deinverzeichnis"[/COLOR][COLOR=#007700]; 
[/COLOR][COLOR=#0000BB]$verz [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]dir[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$mydir[/COLOR][COLOR=#007700]); 
while([/COLOR][COLOR=#0000BB]$entry[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]$verz[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000BB]read[/COLOR][COLOR=#007700]()){ 
        if([/COLOR][COLOR=#0000BB]$entry [/COLOR][COLOR=#007700]!= [/COLOR][COLOR=#DD0000]"." [/COLOR][COLOR=#007700]&& [/COLOR][COLOR=#0000BB]$entry [/COLOR][COLOR=#007700]!= [/COLOR][COLOR=#DD0000]".."[/COLOR][COLOR=#007700]){ 
        [/COLOR][COLOR=#0000BB]$dateinamen[/COLOR][COLOR=#007700][] = [/COLOR][COLOR=#0000BB]$entry[/COLOR][COLOR=#007700]; 
    } 
} 
[/COLOR][COLOR=#0000BB]$verz[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000BB]close[/COLOR][COLOR=#007700](); 

[/COLOR][COLOR=#FF8000]//Ausgabe 
[/COLOR][COLOR=#0000BB]rsort[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$dateinamen[/COLOR][COLOR=#007700]); 
while(list([/COLOR][COLOR=#0000BB]$key[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]$val[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]each[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$dateinamen[/COLOR][COLOR=#007700])) { 
    if([/COLOR][COLOR=#0000BB]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$val[/COLOR][COLOR=#007700], -[/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700]) == [/COLOR][COLOR=#DD0000]".jpg"[/COLOR][COLOR=#007700]) // hier testen PNG, JPG, GIF u.s.w.
    { 
        echo [/COLOR][COLOR=#DD0000]"<A HREF=\"deinverzeichniss/"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$val[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]"\" TARGET=\"_blank\"><IMG SRC=\"deinverzeichniss/"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$val [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#DD0000]"\"><BR>"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$val[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]"</A><BR><BR>"[/COLOR][COLOR=#007700]; 
    } 
} 
[/COLOR][COLOR=#0000BB]?>[/COLOR] [/COLOR]
 

DaBoarder

Noch nicht viel geschrieben

AW: Nur Bilder auslesen für Gallerie

hmm also hat irgendwie nichts geholfen wenn ich die frage nach den png rausgenommen hab.
 

sokie

Mod | Web

AW: Nur Bilder auslesen für Gallerie

verätst du uns auch wie der code jetzt aussieht, nachdem du ihn bearbeitest hast?
 

DaBoarder

Noch nicht viel geschrieben

AW: Nur Bilder auslesen für Gallerie

ja so sieht er jetzt aus geht aber wie gesagt nicht.....
Code:
<?php
if ($handle = opendir($ordner[0]))
{

while (false !== ($file = readdir($handle))) {
$laenge = strlen($file);
if (substr($file, -4 ==".jpg") && $file!=".php" && $file!="." && $file!= ".." && $laenge<40) {
        $bildernamen[] = $file;
		}
    }
closedir($handle) ;
}

foreach($bildernamen as $bn) {
echo "<li>";
echo $bn;
echo "</li>";
}

foreach ($bildernamen AS $dateiname)
{
$exif = exif_read_data($ordner[0] . $dateiname, ANY_TAG, true, true);
echo "<img src=\"$ordner[0]$dateiname\" ";
//echo $exif['COMPUTED']['html']; //hier stehen die im bild gespeicherte bildgrösse
echo "longdesc=\"$dateiname\"" ;
echo " alt=\"";
echo $exif['WINXP']['Title'];
echo '" width="100" border=0 />';
}

unset($bildernamen);
?>
hab jetzt im netz ein anderes script gefunden allerding funktioniert das bei mir auch nicht:
PHP:
   <?php
// Diese Datei ins Oberverzeichnis legen
// Erzeuge automatisch Thumbnails
$zielordner = "gallery"; // Hier den Ordnernamen angeben, in dem sich die Unterordner mit den Bildern befinden
$filetypes = array("jpg");

$dir = $zielordner."/".$_GET['dir'];
// Handle starten
$handle = openDir($dir);

// DIR lesen
while ($filename = readdir($handle))
    {
    // Return-Buttons ignorieren
    if($filename != ".." && $filename != ".")
        {
        // Nur auf Dateien mit Endung jpg anwenden
        $teile = explode(".",$filename);
        $x = sizeof($teile)-1;
        if(in_array(strtolower($teile[$x]),$filetypes))
            {
            // Bilder mit Prefix "th_" nicht behandeln
            if(substr($filename,0,3) != "th_")
                {
                // Deklariere Adresse für Link
                $ziel = $dir."/".$filename;
                // Deklariere Adresse zum Thumbnail
                $thumb = $dir."/th_".$filename;
                // Prüfe, ob Thumbnail schon existiert
                $check = fopen($thumb, "r");
                if($check!=false)
                    {
                    //  Wenn nicht, dannThumbnail erzeugen
                    $im = imagecreatefromjpeg($ziel);
                    $im2 = imageCreate(120, 90);
                    imagecopyresized($im2,$im,0,0,0,0,120,90,imagesx($im),imagesy($im));
                    // und Thumbnail im selben Ordner mit Prefix "th_" speichern
                    imagejpeg($im2, $thumb);
                    imagedestroy($im2);
                    imagedestroy($im);
                    }
                // Das Bild mit Verweis auf Großansicht anzeigen
                echo "<a href='$ziel'><img border='0' src='$thumb'></a> ";
                }
            }
        }
    }
// handle schließen
closeDir($handle);
?>

da kommt bei mir immer das hier:
PHP:
Warning: fopen(fotos/th_aktion01.jpg) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\gal\index.php on line 30

hört sich an als würde er hier keine thumbs erstellen....
ich verzweifel noch...
 

ChrisvA

Aktives Mitglied

Alternative kurze Lösung

Versuch es mal mit der Funktion glob() (siehe php.net). Damit kannst du Dateien nach Endung auswählen. Dann die 2 Ergebnisse in einem Array zusammenführen und sortieren und du hast die richtige Reihenfolge.
Passe aber bei den Endungen auf, dass du die roß-/Kleinschreibung beachtest. Sonst kann es auf Unixsystemen zu Problemen kommen, da .PNG != .png ( != Png...).
 

DaBoarder

Noch nicht viel geschrieben

AW: Nur Bilder auslesen für Gallerie

hmm kennt nicht irgendwer ein fertiges script das mir aus einem extra Ordner Bilder (nur jpg und png) ausliest, daraus Thumbs erstellt und dann in einer kleinen div box oder tabelle auflistet, am besten mit 5 bildern in einer reihe und dann eine neue reihe anfängt ect.....????

Ich merk einfach ich bekomm das so einfach nicht gebacken mit den wenigen Kenntnissen die ich habe.... und diese fertigen Scripts die ich so gefundne habe sind alle vieeeeel zu umfangreich oder brauchen mysql was zwar gehen würde aber dann wieder einfach zu kompliziert ist. Will einfach nur ein Bild auf meinen webspace ziehen und es soll dort automatisch erscheinen, fertig.

wär echt nett thx
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.066
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben