Problem beim Auslesen von Exifs
mrBurns
- php
Hey!
Ich möchte aus einem Ordnern mit Bildern die Titel-Exifs auslesen und diese in meiner Lightbox Diashow unter dem jeweiligen Bild anzeigen lassen.
Dazu habe ich folgenden Code geschrieben:
<?php
$zaehler=-1;
$ordner = "bilder/faces/";
$allebilder = scandir($ordner);
$exif = exif_read_data($allebilder, 0, true);
echo $exif[IFD0][ImageDescription];
/*Dieses Echo ist nur für Testzwecke da, es gibt mir die korrekte Exif aus, wenn ich ein Bild direkt mit Namen angebe*/
foreach ($allebilder as $bild) {
$bildinfo = pathinfo($ordner."/".$bild);
$size = ceil(filesize($ordner."/".$bild)/1024);
if ($bild != "." && $bild != ".." && $bild != "_notes" && $bildinfo['basename'] != "Thumbs.db") {
echo "<td align='center' height='180'>";
echo "<br><div class=\"thumb\">";
echo "<a href=\"".$bildinfo['dirname']."/".$bildinfo['basename']."\" rel=\"lightbox[gente]\" title=\"".$exif."\">\n";
echo "<img src=\"".$bildinfo['dirname']."/".$bildinfo['basename']."\" class=\"thumbnail\" alt=\"\">\n";
echo "</a>";
echo "</div>";
echo "</td>";
if($zaehler==5 || $zaehler==10) {
echo"</tr><tr>";
}
}
$zaehler++;
}
?>
Mit diesem Code bekomme ich die Fehlermeldungen
"Warning: exif_read_data() [function.exif-read-data]: Filename cannot be empty in /.../zapatero/faces.php on line 59
Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /.../zapatero/faces.php on line 59".
Wie im Kommentar beschrieben, kann ich mit dem obigen Codeschnipsel den Bildtitel aus einem Bild auslesen, dass sich im Hauptverzeichnis befindet und in $exif direkt angegeben wird (anstatt $allebilder). Leider gibt es diese jedoch nicht aus, wenn ich wie oben alle Bilder in einer Variablen angebe.
Hat jemand eine Idee?
LG,
Felix
Tach!
$allebilder = scandir($ordner);
$exif = exif_read_data($allebilder, 0, true);
"Warning: exif_read_data() [function.exif-read-data]: Filename cannot be empty in /.../zapatero/faces.php on line 59
Schau bitte im PHP-Handbuch nach, was scandir() liefert und was exif_read_data() als ersten Parameter erwartet. Auch dein zweiter Parameter entspricht nicht der Beschreibung im Handbuch.
dedlfix.
Schau bitte im PHP-Handbuch nach, was scandir() liefert und was exif_read_data() als ersten Parameter erwartet. Auch dein zweiter Parameter entspricht nicht der Beschreibung im Handbuch.
Der zweite Parameter wird aber doch auch im Beispiel verwendet?
Ich habe den Code mal überarbeitet, die Fehlermeldungen sind allerdings immernoch die gleichen.
<?php
if ($handle = opendir('bilder/faces/')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
}
}
$zaehler=-1;
$ordner = "bilder/faces/";
$allebilder = scandir($ordner);
$exif = exif_read_data($file, 0, true);
echo $exif[IFD0][ImageDescription];
foreach ($allebilder as $bild) {
$bildinfo = pathinfo($ordner."/".$bild);
$size = ceil(filesize($ordner."/".$bild)/1024);
if ($bild != "." && $bild != ".." && $bild != "_notes" && $bildinfo['basename'] != "Thumbs.db") {
echo "<td align='center' height='180'>";
echo "<br><div class=\"thumb\">";
echo "<a href=\"".$bildinfo['dirname']."/".$bildinfo['basename']."\" rel=\"lightbox[gente]\" title=\"".$exif."\">\n";
echo "<img src=\"".$bildinfo['dirname']."/".$bildinfo['basename']."\" class=\"thumbnail\" alt=\"\">\n";
echo "</a>";
echo "</div>";
echo "</td>";
if($zaehler==5 || $zaehler==10) {
echo"</tr><tr>";
}
}
$zaehler++;
}
closedir($handle);
}
?>
Mit der ersten if-Schleife werden die Dateinamen ausgelesen (was auch funktioniert) und sollen dann in exif_read_data eingesetzt werden. Nur warum ist der Filename dann leer? Anscheinend funktioniert die übergabe nicht so wie ich mir das gedacht habe...
Tach!
Schau bitte im PHP-Handbuch nach, was scandir() liefert und was exif_read_data() als ersten Parameter erwartet. Auch dein zweiter Parameter entspricht nicht der Beschreibung im Handbuch.
Der zweite Parameter wird aber doch auch im Beispiel verwendet?
Ok, besser wäre jedoch null statt 0, wobei das dem PHP letztlich egal sein wird.
Ich habe den Code mal überarbeitet, die Fehlermeldungen sind allerdings immernoch die gleichen.
$allebilder = scandir($ordner);
Was macht diese Zeile noch im Code?
Mit der ersten if-Schleife werden die Dateinamen ausgelesen (was auch funktioniert) und sollen dann in exif_read_data eingesetzt werden. Nur warum ist der Filename dann leer? Anscheinend funktioniert die übergabe nicht so wie ich mir das gedacht habe...
if-was? Jedenfalls solltest du dir beim Code-Einrücken mehr Mühe geben, dann sähest du vielleicht auch, was da falsch ist. Ordentlich eingerückt sieht das so aus:
if ($handle = opendir('bilder/faces/')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
}
}
[...]
$allebilder = scandir($ordner);
$exif = exif_read_data($file, 0, true);
[...]
}
Mit einer Kontrollausgabe var_dump($file) statt der nun überflüssigen scandir-Zeile würdest du ein false zu sehen bekommen. Und warum steht da false? Weil das die Abbruchbedingung der while-Schleife ist.
dedlfix.